Teensy 4.1 core updated for C++20
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421
  1. /* Teensyduino Core Library
  2. * http://www.pjrc.com/teensy/
  3. * Copyright (c) 2013 PJRC.COM, LLC.
  4. *
  5. * Permission is hereby granted, free of charge, to any person obtaining
  6. * a copy of this software and associated documentation files (the
  7. * "Software"), to deal in the Software without restriction, including
  8. * without limitation the rights to use, copy, modify, merge, publish,
  9. * distribute, sublicense, and/or sell copies of the Software, and to
  10. * permit persons to whom the Software is furnished to do so, subject to
  11. * the following conditions:
  12. *
  13. * 1. The above copyright notice and this permission notice shall be
  14. * included in all copies or substantial portions of the Software.
  15. *
  16. * 2. If the Software is incorporated into a build system that allows
  17. * selection among a list of target devices, then similar target
  18. * devices manufactured by PJRC.COM must be included in the list of
  19. * target devices and selectable in the same manner.
  20. *
  21. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  22. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  23. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  24. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  25. * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  26. * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  27. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  28. * SOFTWARE.
  29. */
  30. #ifndef KEYLAYOUTS_H__
  31. #define KEYLAYOUTS_H__
  32. #include <stdint.h>
  33. #include <avr/pgmspace.h>
  34. #ifdef __cplusplus
  35. extern "C"{
  36. #endif
  37. //#define LAYOUT_US_ENGLISH
  38. //#define LAYOUT_CANADIAN_FRENCH
  39. //#define LAYOUT_CANADIAN_MULTILINGUAL
  40. //#define LAYOUT_DANISH
  41. //#define LAYOUT_FINNISH
  42. //#define LAYOUT_FRENCH
  43. //#define LAYOUT_FRENCH_BELGIAN
  44. //#define LAYOUT_FRENCH_SWISS
  45. //#define LAYOUT_GERMAN
  46. //#define LAYOUT_GERMAN_MAC
  47. //#define LAYOUT_GERMAN_SWISS
  48. //#define LAYOUT_ICELANDIC
  49. //#define LAYOUT_IRISH
  50. //#define LAYOUT_ITALIAN
  51. //#define LAYOUT_NORWEGIAN
  52. //#define LAYOUT_PORTUGUESE
  53. //#define LAYOUT_PORTUGUESE_BRAZILIAN
  54. //#define LAYOUT_SPANISH
  55. //#define LAYOUT_SPANISH_LATIN_AMERICA
  56. //#define LAYOUT_SWEDISH
  57. //#define LAYOUT_TURKISH
  58. //#define LAYOUT_UNITED_KINGDOM
  59. //#define LAYOUT_US_INTERNATIONAL
  60. // http://en.wikipedia.org/wiki/Keyboard_layout
  61. #define MODIFIERKEY_CTRL ( 0x01 | 0x8000 )
  62. #define MODIFIERKEY_SHIFT ( 0x02 | 0x8000 )
  63. #define MODIFIERKEY_ALT ( 0x04 | 0x8000 )
  64. #define MODIFIERKEY_GUI ( 0x08 | 0x8000 )
  65. #define MODIFIERKEY_LEFT_CTRL ( 0x01 | 0x8000 )
  66. #define MODIFIERKEY_LEFT_SHIFT ( 0x02 | 0x8000 )
  67. #define MODIFIERKEY_LEFT_ALT ( 0x04 | 0x8000 )
  68. #define MODIFIERKEY_LEFT_GUI ( 0x08 | 0x8000 )
  69. #define MODIFIERKEY_RIGHT_CTRL ( 0x10 | 0x8000 )
  70. #define MODIFIERKEY_RIGHT_SHIFT ( 0x20 | 0x8000 )
  71. #define MODIFIERKEY_RIGHT_ALT ( 0x40 | 0x8000 )
  72. #define MODIFIERKEY_RIGHT_GUI ( 0x80 | 0x8000 )
  73. #define KEY_MEDIA_VOLUME_INC 0x01
  74. #define KEY_MEDIA_VOLUME_DEC 0x02
  75. #define KEY_MEDIA_MUTE 0x04
  76. #define KEY_MEDIA_PLAY_PAUSE 0x08
  77. #define KEY_MEDIA_NEXT_TRACK 0x10
  78. #define KEY_MEDIA_PREV_TRACK 0x20
  79. #define KEY_MEDIA_STOP 0x40
  80. #define KEY_MEDIA_EJECT 0x80
  81. #define KEY_A ( 4 | 0x4000 )
  82. #define KEY_B ( 5 | 0x4000 )
  83. #define KEY_C ( 6 | 0x4000 )
  84. #define KEY_D ( 7 | 0x4000 )
  85. #define KEY_E ( 8 | 0x4000 )
  86. #define KEY_F ( 9 | 0x4000 )
  87. #define KEY_G ( 10 | 0x4000 )
  88. #define KEY_H ( 11 | 0x4000 )
  89. #define KEY_I ( 12 | 0x4000 )
  90. #define KEY_J ( 13 | 0x4000 )
  91. #define KEY_K ( 14 | 0x4000 )
  92. #define KEY_L ( 15 | 0x4000 )
  93. #define KEY_M ( 16 | 0x4000 )
  94. #define KEY_N ( 17 | 0x4000 )
  95. #define KEY_O ( 18 | 0x4000 )
  96. #define KEY_P ( 19 | 0x4000 )
  97. #define KEY_Q ( 20 | 0x4000 )
  98. #define KEY_R ( 21 | 0x4000 )
  99. #define KEY_S ( 22 | 0x4000 )
  100. #define KEY_T ( 23 | 0x4000 )
  101. #define KEY_U ( 24 | 0x4000 )
  102. #define KEY_V ( 25 | 0x4000 )
  103. #define KEY_W ( 26 | 0x4000 )
  104. #define KEY_X ( 27 | 0x4000 )
  105. #define KEY_Y ( 28 | 0x4000 )
  106. #define KEY_Z ( 29 | 0x4000 )
  107. #define KEY_1 ( 30 | 0x4000 )
  108. #define KEY_2 ( 31 | 0x4000 )
  109. #define KEY_3 ( 32 | 0x4000 )
  110. #define KEY_4 ( 33 | 0x4000 )
  111. #define KEY_5 ( 34 | 0x4000 )
  112. #define KEY_6 ( 35 | 0x4000 )
  113. #define KEY_7 ( 36 | 0x4000 )
  114. #define KEY_8 ( 37 | 0x4000 )
  115. #define KEY_9 ( 38 | 0x4000 )
  116. #define KEY_0 ( 39 | 0x4000 )
  117. #define KEY_ENTER ( 40 | 0x4000 )
  118. #define KEY_ESC ( 41 | 0x4000 )
  119. #define KEY_BACKSPACE ( 42 | 0x4000 )
  120. #define KEY_TAB ( 43 | 0x4000 )
  121. #define KEY_SPACE ( 44 | 0x4000 )
  122. #define KEY_MINUS ( 45 | 0x4000 )
  123. #define KEY_EQUAL ( 46 | 0x4000 )
  124. #define KEY_LEFT_BRACE ( 47 | 0x4000 )
  125. #define KEY_RIGHT_BRACE ( 48 | 0x4000 )
  126. #define KEY_BACKSLASH ( 49 | 0x4000 )
  127. #define KEY_NON_US_NUM ( 50 | 0x4000 )
  128. #define KEY_SEMICOLON ( 51 | 0x4000 )
  129. #define KEY_QUOTE ( 52 | 0x4000 )
  130. #define KEY_TILDE ( 53 | 0x4000 )
  131. #define KEY_COMMA ( 54 | 0x4000 )
  132. #define KEY_PERIOD ( 55 | 0x4000 )
  133. #define KEY_SLASH ( 56 | 0x4000 )
  134. #define KEY_CAPS_LOCK ( 57 | 0x4000 )
  135. #define KEY_F1 ( 58 | 0x4000 )
  136. #define KEY_F2 ( 59 | 0x4000 )
  137. #define KEY_F3 ( 60 | 0x4000 )
  138. #define KEY_F4 ( 61 | 0x4000 )
  139. #define KEY_F5 ( 62 | 0x4000 )
  140. #define KEY_F6 ( 63 | 0x4000 )
  141. #define KEY_F7 ( 64 | 0x4000 )
  142. #define KEY_F8 ( 65 | 0x4000 )
  143. #define KEY_F9 ( 66 | 0x4000 )
  144. #define KEY_F10 ( 67 | 0x4000 )
  145. #define KEY_F11 ( 68 | 0x4000 )
  146. #define KEY_F12 ( 69 | 0x4000 )
  147. #define KEY_PRINTSCREEN ( 70 | 0x4000 )
  148. #define KEY_SCROLL_LOCK ( 71 | 0x4000 )
  149. #define KEY_PAUSE ( 72 | 0x4000 )
  150. #define KEY_INSERT ( 73 | 0x4000 )
  151. #define KEY_HOME ( 74 | 0x4000 )
  152. #define KEY_PAGE_UP ( 75 | 0x4000 )
  153. #define KEY_DELETE ( 76 | 0x4000 )
  154. #define KEY_END ( 77 | 0x4000 )
  155. #define KEY_PAGE_DOWN ( 78 | 0x4000 )
  156. #define KEY_RIGHT ( 79 | 0x4000 )
  157. #define KEY_LEFT ( 80 | 0x4000 )
  158. #define KEY_DOWN ( 81 | 0x4000 )
  159. #define KEY_UP ( 82 | 0x4000 )
  160. #define KEY_NUM_LOCK ( 83 | 0x4000 )
  161. #define KEYPAD_SLASH ( 84 | 0x4000 )
  162. #define KEYPAD_ASTERIX ( 85 | 0x4000 )
  163. #define KEYPAD_MINUS ( 86 | 0x4000 )
  164. #define KEYPAD_PLUS ( 87 | 0x4000 )
  165. #define KEYPAD_ENTER ( 88 | 0x4000 )
  166. #define KEYPAD_1 ( 89 | 0x4000 )
  167. #define KEYPAD_2 ( 90 | 0x4000 )
  168. #define KEYPAD_3 ( 91 | 0x4000 )
  169. #define KEYPAD_4 ( 92 | 0x4000 )
  170. #define KEYPAD_5 ( 93 | 0x4000 )
  171. #define KEYPAD_6 ( 94 | 0x4000 )
  172. #define KEYPAD_7 ( 95 | 0x4000 )
  173. #define KEYPAD_8 ( 96 | 0x4000 )
  174. #define KEYPAD_9 ( 97 | 0x4000 )
  175. #define KEYPAD_0 ( 98 | 0x4000 )
  176. #define KEYPAD_PERIOD ( 99 | 0x4000 )
  177. #define KEY_MENU ( 101 | 0x4000 )
  178. #define KEY_F13 ( 104 | 0x4000 )
  179. #define KEY_F14 ( 105 | 0x4000 )
  180. #define KEY_F15 ( 106 | 0x4000 )
  181. #define KEY_F16 ( 107 | 0x4000 )
  182. #define KEY_F17 ( 108 | 0x4000 )
  183. #define KEY_F18 ( 109 | 0x4000 )
  184. #define KEY_F19 ( 110 | 0x4000 )
  185. #define KEY_F20 ( 111 | 0x4000 )
  186. #define KEY_F21 ( 112 | 0x4000 )
  187. #define KEY_F22 ( 113 | 0x4000 )
  188. #define KEY_F23 ( 114 | 0x4000 )
  189. #define KEY_F24 ( 115 | 0x4000 )
  190. // for compatibility with Leonardo's slightly different names
  191. #define KEY_UP_ARROW KEY_UP
  192. #define KEY_DOWN_ARROW KEY_DOWN
  193. #define KEY_LEFT_ARROW KEY_LEFT
  194. #define KEY_RIGHT_ARROW KEY_RIGHT
  195. #define KEY_RETURN KEY_ENTER
  196. #define KEY_LEFT_CTRL MODIFIERKEY_LEFT_CTRL
  197. #define KEY_LEFT_SHIFT MODIFIERKEY_LEFT_SHIFT
  198. #define KEY_LEFT_ALT MODIFIERKEY_LEFT_ALT
  199. #define KEY_LEFT_GUI MODIFIERKEY_LEFT_GUI
  200. #define KEY_RIGHT_CTRL MODIFIERKEY_RIGHT_CTRL
  201. #define KEY_RIGHT_SHIFT MODIFIERKEY_RIGHT_SHIFT
  202. #define KEY_RIGHT_ALT MODIFIERKEY_RIGHT_ALT
  203. #define KEY_RIGHT_GUI MODIFIERKEY_RIGHT_GUI
  204. // Everything below this line is not intended for use in "normal" programs.
  205. // These private symbols populate lookup tables, which are used to translate
  206. // ascii and UTF8 unicode into keystroke sequences.
  207. #ifdef LAYOUT_US_ENGLISH
  208. #define SHIFT_MASK 0x40
  209. #define KEYCODE_TYPE uint8_t
  210. #define ASCII_20 KEY_SPACE // 32
  211. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  212. #define ASCII_22 KEY_QUOTE + SHIFT_MASK // 34 "
  213. #define ASCII_23 KEY_3 + SHIFT_MASK // 35 #
  214. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  215. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  216. #define ASCII_26 KEY_7 + SHIFT_MASK // 38 &
  217. #define ASCII_27 KEY_QUOTE // 39 '
  218. #define ASCII_28 KEY_9 + SHIFT_MASK // 40 (
  219. #define ASCII_29 KEY_0 + SHIFT_MASK // 41 )
  220. #define ASCII_2A KEY_8 + SHIFT_MASK // 42 *
  221. #define ASCII_2B KEY_EQUAL + SHIFT_MASK // 43 +
  222. #define ASCII_2C KEY_COMMA // 44 ,
  223. #define ASCII_2D KEY_MINUS // 45 -
  224. #define ASCII_2E KEY_PERIOD // 46 .
  225. #define ASCII_2F KEY_SLASH // 47 /
  226. #define ASCII_30 KEY_0 // 48 0
  227. #define ASCII_31 KEY_1 // 49 1
  228. #define ASCII_32 KEY_2 // 50 2
  229. #define ASCII_33 KEY_3 // 51 3
  230. #define ASCII_34 KEY_4 // 52 4
  231. #define ASCII_35 KEY_5 // 53 5
  232. #define ASCII_36 KEY_6 // 54 6
  233. #define ASCII_37 KEY_7 // 55 7
  234. #define ASCII_38 KEY_8 // 55 8
  235. #define ASCII_39 KEY_9 // 57 9
  236. #define ASCII_3A KEY_SEMICOLON + SHIFT_MASK // 58 :
  237. #define ASCII_3B KEY_SEMICOLON // 59 ;
  238. #define ASCII_3C KEY_COMMA + SHIFT_MASK // 60 <
  239. #define ASCII_3D KEY_EQUAL // 61 =
  240. #define ASCII_3E KEY_PERIOD + SHIFT_MASK // 62 >
  241. #define ASCII_3F KEY_SLASH + SHIFT_MASK // 63 ?
  242. #define ASCII_40 KEY_2 + SHIFT_MASK // 64 @
  243. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  244. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  245. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  246. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  247. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  248. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  249. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  250. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  251. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  252. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  253. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  254. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  255. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  256. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  257. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  258. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  259. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  260. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  261. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  262. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  263. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  264. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  265. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  266. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  267. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  268. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  269. #define ASCII_5B KEY_LEFT_BRACE // 91 [
  270. #define ASCII_5C KEY_BACKSLASH // 92
  271. #define ASCII_5D KEY_RIGHT_BRACE // 93 ]
  272. #define ASCII_5E KEY_6 + SHIFT_MASK // 94 ^
  273. #define ASCII_5F KEY_MINUS + SHIFT_MASK // 95 _
  274. #define ASCII_60 KEY_TILDE // 96 `
  275. #define ASCII_61 KEY_A // 97 a
  276. #define ASCII_62 KEY_B // 98 b
  277. #define ASCII_63 KEY_C // 99 c
  278. #define ASCII_64 KEY_D // 100 d
  279. #define ASCII_65 KEY_E // 101 e
  280. #define ASCII_66 KEY_F // 102 f
  281. #define ASCII_67 KEY_G // 103 g
  282. #define ASCII_68 KEY_H // 104 h
  283. #define ASCII_69 KEY_I // 105 i
  284. #define ASCII_6A KEY_J // 106 j
  285. #define ASCII_6B KEY_K // 107 k
  286. #define ASCII_6C KEY_L // 108 l
  287. #define ASCII_6D KEY_M // 109 m
  288. #define ASCII_6E KEY_N // 110 n
  289. #define ASCII_6F KEY_O // 111 o
  290. #define ASCII_70 KEY_P // 112 p
  291. #define ASCII_71 KEY_Q // 113 q
  292. #define ASCII_72 KEY_R // 114 r
  293. #define ASCII_73 KEY_S // 115 s
  294. #define ASCII_74 KEY_T // 116 t
  295. #define ASCII_75 KEY_U // 117 u
  296. #define ASCII_76 KEY_V // 118 v
  297. #define ASCII_77 KEY_W // 119 w
  298. #define ASCII_78 KEY_X // 120 x
  299. #define ASCII_79 KEY_Y // 121 y
  300. #define ASCII_7A KEY_Z // 122 z
  301. #define ASCII_7B KEY_LEFT_BRACE + SHIFT_MASK // 123 {
  302. #define ASCII_7C KEY_BACKSLASH + SHIFT_MASK // 124 |
  303. #define ASCII_7D KEY_RIGHT_BRACE + SHIFT_MASK // 125 }
  304. #define ASCII_7E KEY_TILDE + SHIFT_MASK // 126 ~
  305. #define ASCII_7F KEY_BACKSPACE // 127
  306. #endif // LAYOUT_US_ENGLISH
  307. #ifdef LAYOUT_US_INTERNATIONAL
  308. #define SHIFT_MASK 0x0040
  309. #define ALTGR_MASK 0x0080
  310. #define DEADKEYS_MASK 0x0700
  311. #define CIRCUMFLEX_BITS 0x0100
  312. #define ACUTE_ACCENT_BITS 0x0200
  313. #define GRAVE_ACCENT_BITS 0x0300
  314. #define TILDE_BITS 0x0400
  315. #define DIAERESIS_BITS 0x0500
  316. #define KEYCODE_TYPE uint16_t
  317. #define DEADKEY_CIRCUMFLEX KEY_6 + SHIFT_MASK
  318. #define DEADKEY_ACUTE_ACCENT KEY_QUOTE
  319. #define DEADKEY_GRAVE_ACCENT KEY_TILDE
  320. #define DEADKEY_TILDE KEY_TILDE + SHIFT_MASK
  321. #define DEADKEY_DIAERESIS KEY_QUOTE + SHIFT_MASK
  322. #define ASCII_20 KEY_SPACE // 32
  323. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  324. #define ASCII_22 DIAERESIS_BITS + KEY_SPACE // 34 "
  325. #define ASCII_23 KEY_3 + SHIFT_MASK // 35 #
  326. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  327. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  328. #define ASCII_26 KEY_7 + SHIFT_MASK // 38 &
  329. #define ASCII_27 ACUTE_ACCENT_BITS + KEY_SPACE // 39 '
  330. #define ASCII_28 KEY_9 + SHIFT_MASK // 40 (
  331. #define ASCII_29 KEY_0 + SHIFT_MASK // 41 )
  332. #define ASCII_2A KEY_8 + SHIFT_MASK // 42 *
  333. #define ASCII_2B KEY_EQUAL + SHIFT_MASK // 43 +
  334. #define ASCII_2C KEY_COMMA // 44 ,
  335. #define ASCII_2D KEY_MINUS // 45 -
  336. #define ASCII_2E KEY_PERIOD // 46 .
  337. #define ASCII_2F KEY_SLASH // 47 /
  338. #define ASCII_30 KEY_0 // 48 0
  339. #define ASCII_31 KEY_1 // 49 1
  340. #define ASCII_32 KEY_2 // 50 2
  341. #define ASCII_33 KEY_3 // 51 3
  342. #define ASCII_34 KEY_4 // 52 4
  343. #define ASCII_35 KEY_5 // 53 5
  344. #define ASCII_36 KEY_6 // 54 6
  345. #define ASCII_37 KEY_7 // 55 7
  346. #define ASCII_38 KEY_8 // 55 8
  347. #define ASCII_39 KEY_9 // 57 9
  348. #define ASCII_3A KEY_SEMICOLON + SHIFT_MASK // 58 :
  349. #define ASCII_3B KEY_SEMICOLON // 59 ;
  350. #define ASCII_3C KEY_COMMA + SHIFT_MASK // 60 <
  351. #define ASCII_3D KEY_EQUAL // 61 =
  352. #define ASCII_3E KEY_PERIOD + SHIFT_MASK // 62 >
  353. #define ASCII_3F KEY_SLASH + SHIFT_MASK // 63 ?
  354. #define ASCII_40 KEY_2 + SHIFT_MASK // 64 @
  355. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  356. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  357. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  358. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  359. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  360. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  361. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  362. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  363. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  364. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  365. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  366. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  367. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  368. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  369. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  370. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  371. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  372. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  373. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  374. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  375. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  376. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  377. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  378. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  379. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  380. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  381. #define ASCII_5B KEY_LEFT_BRACE // 91 [
  382. #define ASCII_5C KEY_BACKSLASH // 92
  383. #define ASCII_5D KEY_RIGHT_BRACE // 93 ]
  384. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  385. #define ASCII_5F KEY_MINUS + SHIFT_MASK // 95 _
  386. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  387. #define ASCII_61 KEY_A // 97 a
  388. #define ASCII_62 KEY_B // 98 b
  389. #define ASCII_63 KEY_C // 99 c
  390. #define ASCII_64 KEY_D // 100 d
  391. #define ASCII_65 KEY_E // 101 e
  392. #define ASCII_66 KEY_F // 102 f
  393. #define ASCII_67 KEY_G // 103 g
  394. #define ASCII_68 KEY_H // 104 h
  395. #define ASCII_69 KEY_I // 105 i
  396. #define ASCII_6A KEY_J // 106 j
  397. #define ASCII_6B KEY_K // 107 k
  398. #define ASCII_6C KEY_L // 108 l
  399. #define ASCII_6D KEY_M // 109 m
  400. #define ASCII_6E KEY_N // 110 n
  401. #define ASCII_6F KEY_O // 111 o
  402. #define ASCII_70 KEY_P // 112 p
  403. #define ASCII_71 KEY_Q // 113 q
  404. #define ASCII_72 KEY_R // 114 r
  405. #define ASCII_73 KEY_S // 115 s
  406. #define ASCII_74 KEY_T // 116 t
  407. #define ASCII_75 KEY_U // 117 u
  408. #define ASCII_76 KEY_V // 118 v
  409. #define ASCII_77 KEY_W // 119 w
  410. #define ASCII_78 KEY_X // 120 x
  411. #define ASCII_79 KEY_Y // 121 y
  412. #define ASCII_7A KEY_Z // 122 z
  413. #define ASCII_7B KEY_LEFT_BRACE + SHIFT_MASK // 123 {
  414. #define ASCII_7C KEY_BACKSLASH + SHIFT_MASK // 124 |
  415. #define ASCII_7D KEY_RIGHT_BRACE + SHIFT_MASK // 125 }
  416. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  417. #define ASCII_7F KEY_BACKSPACE // 127
  418. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  419. #define ISO_8859_1_A1 KEY_1 + ALTGR_MASK // 161 ¡ Inverted Exclamation
  420. #define ISO_8859_1_A2 KEY_C + ALTGR_MASK + SHIFT_MASK // 162 ¢ Cent SIGN
  421. #define ISO_8859_1_A3 KEY_4 + ALTGR_MASK + SHIFT_MASK // 163 £ Pound Sign
  422. #define ISO_8859_1_A4 KEY_4 + ALTGR_MASK // 164 ¤ Currency or Euro Sign
  423. #define ISO_8859_1_A5 KEY_MINUS + ALTGR_MASK // 165 ¥ YEN SIGN
  424. #define ISO_8859_1_A6 KEY_BACKSLASH + ALTGR_MASK + SHIFT_MASK // 166 ¦ BROKEN BAR ??
  425. #define ISO_8859_1_A7 KEY_S + ALTGR_MASK + SHIFT_MASK // 167 § SECTION SIGN
  426. #define ISO_8859_1_A8 KEY_QUOTE + ALTGR_MASK + SHIFT_MASK // 168 ¨ DIAERESIS
  427. #define ISO_8859_1_A9 KEY_C + ALTGR_MASK // 169 © COPYRIGHT SIGN
  428. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  429. #define ISO_8859_1_AB KEY_LEFT_BRACE + ALTGR_MASK // 171 « LEFT DOUBLE ANGLE QUOTE
  430. #define ISO_8859_1_AC KEY_BACKSLASH + ALTGR_MASK // 172 ¬ NOT SIGN ??
  431. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  432. #define ISO_8859_1_AE KEY_R + ALTGR_MASK // 174 ® REGISTERED SIGN
  433. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  434. #define ISO_8859_1_B0 KEY_SEMICOLON + ALTGR_MASK + SHIFT_MASK // 176 ° DEGREE SIGN
  435. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  436. #define ISO_8859_1_B2 KEY_2 + ALTGR_MASK // 178 ² SUPERSCRIPT TWO
  437. #define ISO_8859_1_B3 KEY_3 + ALTGR_MASK // 179 ³ SUPERSCRIPT THREE
  438. #define ISO_8859_1_B4 KEY_QUOTE + ALTGR_MASK // 180 ´ ACUTE ACCENT
  439. #define ISO_8859_1_B5 KEY_M + ALTGR_MASK // 181 µ MICRO SIGN
  440. #define ISO_8859_1_B6 KEY_SEMICOLON + ALTGR_MASK // 182 ¶ PILCROW SIGN
  441. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  442. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  443. #define ISO_8859_1_B9 KEY_1 + ALTGR_MASK + SHIFT_MASK // 185 ¹ SUPERSCRIPT ONE
  444. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  445. #define ISO_8859_1_BB KEY_RIGHT_BRACE + ALTGR_MASK // 187 » RIGHT DOUBLE ANGLE QUOTE
  446. #define ISO_8859_1_BC KEY_6 + ALTGR_MASK // 188 ¼ FRACTION ONE QUARTER
  447. #define ISO_8859_1_BD KEY_7 + ALTGR_MASK // 189 ½ FRACTION ONE HALF
  448. #define ISO_8859_1_BE KEY_8 + ALTGR_MASK // 190 ¾ FRACTION THREE QUARTERS
  449. #define ISO_8859_1_BF KEY_SLASH + ALTGR_MASK // 191 ¿ INVERTED QUESTION MARK
  450. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  451. #define ISO_8859_1_C1 KEY_A + ALTGR_MASK + SHIFT_MASK // 193 Á A ACUTE
  452. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  453. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  454. #define ISO_8859_1_C4 KEY_Q + ALTGR_MASK + SHIFT_MASK // 196 Ä A DIAERESIS
  455. #define ISO_8859_1_C5 KEY_W + ALTGR_MASK + SHIFT_MASK // 197 Å A RING ABOVE
  456. #define ISO_8859_1_C6 KEY_Z + ALTGR_MASK + SHIFT_MASK // 198 Æ AE
  457. #define ISO_8859_1_C7 KEY_COMMA + ALTGR_MASK + SHIFT_MASK // 199 Ç C CEDILLA
  458. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  459. #define ISO_8859_1_C9 KEY_E + ALTGR_MASK + SHIFT_MASK // 201 É E ACUTE
  460. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  461. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  462. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  463. #define ISO_8859_1_CD KEY_I + ALTGR_MASK + SHIFT_MASK // 205 Í I ACUTE
  464. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  465. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  466. #define ISO_8859_1_D0 KEY_D + ALTGR_MASK + SHIFT_MASK // 208 Ð ETH
  467. #define ISO_8859_1_D1 KEY_N + ALTGR_MASK + SHIFT_MASK // 209 Ñ N TILDE
  468. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  469. #define ISO_8859_1_D3 KEY_O + ALTGR_MASK + SHIFT_MASK // 211 Ó O ACUTE
  470. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  471. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  472. #define ISO_8859_1_D6 KEY_P + ALTGR_MASK + SHIFT_MASK // 214 Ö O DIAERESIS
  473. #define ISO_8859_1_D7 KEY_EQUAL + ALTGR_MASK // 215 × MULTIPLICATION
  474. #define ISO_8859_1_D8 KEY_L + ALTGR_MASK + SHIFT_MASK // 216 Ø O STROKE
  475. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  476. #define ISO_8859_1_DA KEY_U + ALTGR_MASK + SHIFT_MASK // 218 Ú U ACUTE
  477. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  478. #define ISO_8859_1_DC KEY_Y + ALTGR_MASK + SHIFT_MASK // 220 Ü U DIAERESIS
  479. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  480. #define ISO_8859_1_DE KEY_T + ALTGR_MASK + SHIFT_MASK // 222 Þ THORN
  481. #define ISO_8859_1_DF KEY_S + ALTGR_MASK // 223 ß SHARP S
  482. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  483. #define ISO_8859_1_E1 KEY_A + ALTGR_MASK // 225 á a ACUTE
  484. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  485. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  486. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  487. #define ISO_8859_1_E5 KEY_W + ALTGR_MASK // 229 å a RING ABOVE
  488. #define ISO_8859_1_E6 KEY_Z + ALTGR_MASK // 230 æ ae
  489. #define ISO_8859_1_E7 KEY_COMMA + ALTGR_MASK // 231 ç c CEDILLA
  490. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  491. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  492. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  493. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  494. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  495. #define ISO_8859_1_ED KEY_I + ALTGR_MASK // 237 í i ACUTE
  496. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  497. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  498. #define ISO_8859_1_F0 KEY_D + ALTGR_MASK // 240 ð ETH
  499. #define ISO_8859_1_F1 KEY_N + ALTGR_MASK // 241 ñ n TILDE
  500. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  501. #define ISO_8859_1_F3 KEY_O + ALTGR_MASK // 243 ó o ACUTE
  502. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  503. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  504. #define ISO_8859_1_F6 KEY_P + ALTGR_MASK // 246 ö o DIAERESIS
  505. #define ISO_8859_1_F7 KEY_EQUAL + ALTGR_MASK + SHIFT_MASK // 247 ÷ DIVISION
  506. #define ISO_8859_1_F8 KEY_L + ALTGR_MASK // 248 ø o STROKE
  507. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  508. #define ISO_8859_1_FA KEY_U + ALTGR_MASK // 250 ú u ACUTE
  509. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  510. #define ISO_8859_1_FC KEY_Y + ALTGR_MASK // 252 ü u DIAERESIS
  511. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  512. #define ISO_8859_1_FE KEY_T + ALTGR_MASK // 254 þ THORN
  513. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  514. #define UNICODE_20AC KEY_5 + ALTGR_MASK // € Euro Sign
  515. // not yet implemented
  516. #define UNICODE_EXTRA00 0x20AC
  517. #define KEYCODE_EXTRA00 KEY_5 + ALTGR_MASK // 20AC € Euro Sign
  518. #endif // LAYOUT_US_INTERNATIONAL
  519. #ifdef LAYOUT_GERMAN
  520. #define SHIFT_MASK 0x0040
  521. #define ALTGR_MASK 0x0080
  522. #define DEADKEYS_MASK 0x0700
  523. #define SHIFT_MASK 0x0100
  524. #define ALTGR_MASK 0x0200
  525. #define CIRCUMFLEX_BITS 0x0300
  526. #define ACUTE_ACCENT_BITS 0x0400
  527. #define GRAVE_ACCENT_BITS 0x0500
  528. #define KEYCODE_TYPE uint16_t
  529. #define DEADKEY_CIRCUMFLEX KEY_TILDE
  530. //#define DEADKEY_CIRCUMFLEX KEY_NON_US_100
  531. #define DEADKEY_ACUTE_ACCENT KEY_EQUAL
  532. #define DEADKEY_GRAVE_ACCENT KEY_EQUAL + SHIFT_MASK
  533. #define KEY_NON_US_100 63
  534. #define ASCII_20 KEY_SPACE // 32
  535. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  536. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  537. #define ASCII_23 KEY_BACKSLASH // 35 # ??
  538. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  539. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  540. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  541. #define ASCII_27 KEY_BACKSLASH + SHIFT_MASK // 39 '
  542. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  543. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  544. #define ASCII_2A KEY_RIGHT_BRACE + SHIFT_MASK // 42 *
  545. #define ASCII_2B KEY_RIGHT_BRACE // 43 +
  546. #define ASCII_2C KEY_COMMA // 44 ,
  547. #define ASCII_2D KEY_SLASH // 45 -
  548. #define ASCII_2E KEY_PERIOD // 46 .
  549. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  550. #define ASCII_30 KEY_0 // 48 0
  551. #define ASCII_31 KEY_1 // 49 1
  552. #define ASCII_32 KEY_2 // 50 2
  553. #define ASCII_33 KEY_3 // 51 3
  554. #define ASCII_34 KEY_4 // 52 4
  555. #define ASCII_35 KEY_5 // 53 5
  556. #define ASCII_36 KEY_6 // 54 6
  557. #define ASCII_37 KEY_7 // 55 7
  558. #define ASCII_38 KEY_8 // 55 8
  559. #define ASCII_39 KEY_9 // 57 9
  560. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  561. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  562. #define ASCII_3C KEY_NON_US_100 // 60 <
  563. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  564. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  565. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  566. #define ASCII_40 KEY_Q + ALTGR_MASK // 64 @
  567. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  568. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  569. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  570. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  571. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  572. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  573. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  574. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  575. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  576. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  577. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  578. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  579. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  580. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  581. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  582. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  583. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  584. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  585. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  586. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  587. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  588. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  589. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  590. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  591. #define ASCII_59 KEY_Z + SHIFT_MASK // 89 Y
  592. #define ASCII_5A KEY_Y + SHIFT_MASK // 90 Z
  593. #define ASCII_5B KEY_8 + ALTGR_MASK // 91 [
  594. #define ASCII_5C KEY_MINUS + ALTGR_MASK // 92
  595. #define ASCII_5D KEY_9 + ALTGR_MASK // 93 ]
  596. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  597. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  598. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  599. #define ASCII_61 KEY_A // 97 a
  600. #define ASCII_62 KEY_B // 98 b
  601. #define ASCII_63 KEY_C // 99 c
  602. #define ASCII_64 KEY_D // 100 d
  603. #define ASCII_65 KEY_E // 101 e
  604. #define ASCII_66 KEY_F // 102 f
  605. #define ASCII_67 KEY_G // 103 g
  606. #define ASCII_68 KEY_H // 104 h
  607. #define ASCII_69 KEY_I // 105 i
  608. #define ASCII_6A KEY_J // 106 j
  609. #define ASCII_6B KEY_K // 107 k
  610. #define ASCII_6C KEY_L // 108 l
  611. #define ASCII_6D KEY_M // 109 m
  612. #define ASCII_6E KEY_N // 110 n
  613. #define ASCII_6F KEY_O // 111 o
  614. #define ASCII_70 KEY_P // 112 p
  615. #define ASCII_71 KEY_Q // 113 q
  616. #define ASCII_72 KEY_R // 114 r
  617. #define ASCII_73 KEY_S // 115 s
  618. #define ASCII_74 KEY_T // 116 t
  619. #define ASCII_75 KEY_U // 117 u
  620. #define ASCII_76 KEY_V // 118 v
  621. #define ASCII_77 KEY_W // 119 w
  622. #define ASCII_78 KEY_X // 120 x
  623. #define ASCII_79 KEY_Z // 121 y
  624. #define ASCII_7A KEY_Y // 122 z
  625. #define ASCII_7B KEY_7 + ALTGR_MASK // 123 {
  626. #define ASCII_7C KEY_NON_US_100 + ALTGR_MASK // 124 |
  627. #define ASCII_7D KEY_0 + ALTGR_MASK // 125 }
  628. #define ASCII_7E KEY_RIGHT_BRACE + ALTGR_MASK // 126 ~
  629. #define ASCII_7F KEY_BACKSPACE // 127
  630. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  631. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  632. #define ISO_8859_1_A2 0 // 162 ¢ Cent Sign
  633. #define ISO_8859_1_A3 0 // 163 £ Pound Sign
  634. #define ISO_8859_1_A4 KEY_E + ALTGR_MASK // 164 ¤ Currency Sign
  635. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  636. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  637. #define ISO_8859_1_A7 KEY_3 + SHIFT_MASK // 167 § SECTION SIGN
  638. #define ISO_8859_1_A8 0 // 168 ¨ DIAERESIS
  639. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  640. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  641. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  642. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  643. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  644. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  645. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  646. #define ISO_8859_1_B0 KEY_TILDE + SHIFT_MASK // 176 ° DEGREE SIGN
  647. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  648. #define ISO_8859_1_B2 KEY_2 + ALTGR_MASK // 178 ² SUPERSCRIPT TWO
  649. #define ISO_8859_1_B3 KEY_3 + ALTGR_MASK // 179 ³ SUPERSCRIPT THREE
  650. #define ISO_8859_1_B4 0 // 180 ´ ACUTE ACCENT
  651. #define ISO_8859_1_B5 KEY_M + ALTGR_MASK // 181 µ MICRO SIGN
  652. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  653. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  654. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  655. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  656. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  657. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  658. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  659. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  660. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  661. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  662. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  663. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  664. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  665. #define ISO_8859_1_C3 0 // 195 Ã A TILDE
  666. #define ISO_8859_1_C4 KEY_QUOTE + SHIFT_MASK // 196 Ä A DIAERESIS
  667. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  668. #define ISO_8859_1_C6 0 // 198 Æ AE
  669. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  670. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  671. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  672. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  673. #define ISO_8859_1_CB 0 // 203 Ë E DIAERESIS
  674. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  675. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  676. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  677. #define ISO_8859_1_CF 0 // 207 Ï I DIAERESIS
  678. #define ISO_8859_1_D0 0 // 208 Ð ETH
  679. #define ISO_8859_1_D1 0 // 209 Ñ N TILDE
  680. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  681. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  682. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  683. #define ISO_8859_1_D5 0 // 213 Õ O TILDE
  684. #define ISO_8859_1_D6 KEY_SEMICOLON + SHIFT_MASK // 214 Ö O DIAERESIS
  685. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  686. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  687. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  688. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  689. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  690. #define ISO_8859_1_DC KEY_LEFT_BRACE + SHIFT_MASK // 220 Ü U DIAERESIS
  691. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Z + SHIFT_MASK // 221 Ý Y ACUTE
  692. #define ISO_8859_1_DE 0 // 222 Þ THORN
  693. #define ISO_8859_1_DF KEY_MINUS // 223 ß SHARP S
  694. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  695. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  696. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  697. #define ISO_8859_1_E3 0 // 227 ã a TILDE
  698. #define ISO_8859_1_E4 KEY_QUOTE // 228 ä a DIAERESIS
  699. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  700. #define ISO_8859_1_E6 0 // 230 æ ae
  701. #define ISO_8859_1_E7 0 // 231 ç c CEDILLA
  702. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  703. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  704. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  705. #define ISO_8859_1_EB 0 // 235 ë e DIAERESIS
  706. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  707. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  708. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  709. #define ISO_8859_1_EF 0 // 239 ï i DIAERESIS
  710. #define ISO_8859_1_F0 0 // 240 ð ETH
  711. #define ISO_8859_1_F1 0 // 241 ñ n TILDE
  712. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  713. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  714. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  715. #define ISO_8859_1_F5 0 // 245 õ o TILDE
  716. #define ISO_8859_1_F6 KEY_SEMICOLON // 246 ö o DIAERESIS
  717. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  718. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  719. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  720. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  721. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  722. #define ISO_8859_1_FC KEY_LEFT_BRACE // 252 ü u DIAERESIS
  723. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Z // 253 ý y ACUTE
  724. #define ISO_8859_1_FE 0 // 254 þ THORN
  725. #define ISO_8859_1_FF 0 // 255 ÿ y DIAERESIS
  726. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  727. // not yet implemented
  728. #define UNICODE_EXTRA00 0x20AC
  729. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  730. #endif // LAYOUT_GERMAN
  731. #ifdef LAYOUT_GERMAN_MAC
  732. #define SHIFT_MASK 0x0040
  733. #define ALTGR_MASK 0x0080
  734. #define DEADKEYS_MASK 0x0700
  735. #define ACUTE_ACCENT_BITS 0x0100
  736. #define GRAVE_ACCENT_BITS 0x0200
  737. #define CIRCUMFLEX_BITS 0x0300
  738. #define DIAERESIS_BITS 0x0400
  739. #define TILDE_BITS 0x0500
  740. #define KEYCODE_TYPE uint16_t
  741. #define DEADKEY_ACUTE_ACCENT KEY_EQUAL
  742. #define DEADKEY_GRAVE_ACCENT KEY_EQUAL + SHIFT_MASK
  743. #define DEADKEY_CIRCUMFLEX KEY_6 + SHIFT_MASK + ALTGR_MASK
  744. #define DEADKEY_DIAERESIS KEY_U + ALTGR_MASK
  745. #define DEADKEY_TILDE KEY_N + ALTGR_MASK
  746. #define KEY_NON_US_100 63
  747. #define ASCII_20 KEY_SPACE // 32
  748. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  749. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  750. #define ASCII_23 KEY_BACKSLASH // 35 # ??
  751. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  752. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  753. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  754. #define ASCII_27 KEY_BACKSLASH + SHIFT_MASK // 39 '
  755. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  756. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  757. #define ASCII_2A KEY_RIGHT_BRACE + SHIFT_MASK // 42 *
  758. #define ASCII_2B KEY_RIGHT_BRACE // 43 +
  759. #define ASCII_2C KEY_COMMA // 44 ,
  760. #define ASCII_2D KEY_SLASH // 45 -
  761. #define ASCII_2E KEY_PERIOD // 46 .
  762. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  763. #define ASCII_30 KEY_0 // 48 0
  764. #define ASCII_31 KEY_1 // 49 1
  765. #define ASCII_32 KEY_2 // 50 2
  766. #define ASCII_33 KEY_3 // 51 3
  767. #define ASCII_34 KEY_4 // 52 4
  768. #define ASCII_35 KEY_5 // 53 5
  769. #define ASCII_36 KEY_6 // 54 6
  770. #define ASCII_37 KEY_7 // 55 7
  771. #define ASCII_38 KEY_8 // 55 8
  772. #define ASCII_39 KEY_9 // 57 9
  773. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  774. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  775. #define ASCII_3C KEY_TILDE // 60 <
  776. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  777. #define ASCII_3E KEY_TILDE + SHIFT_MASK // 62 >
  778. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  779. #define ASCII_40 KEY_Q + ALTGR_MASK // 64 @
  780. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  781. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  782. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  783. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  784. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  785. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  786. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  787. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  788. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  789. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  790. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  791. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  792. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  793. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  794. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  795. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  796. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  797. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  798. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  799. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  800. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  801. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  802. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  803. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  804. #define ASCII_59 KEY_Z + SHIFT_MASK // 89 Y
  805. #define ASCII_5A KEY_Y + SHIFT_MASK // 90 Z
  806. #define ASCII_5B KEY_5 + ALTGR_MASK // 91 [
  807. #define ASCII_5C KEY_7 + ALTGR_MASK + SHIFT_MASK // 92
  808. #define ASCII_5D KEY_6 + ALTGR_MASK // 93 ]
  809. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  810. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  811. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  812. #define ASCII_61 KEY_A // 97 a
  813. #define ASCII_62 KEY_B // 98 b
  814. #define ASCII_63 KEY_C // 99 c
  815. #define ASCII_64 KEY_D // 100 d
  816. #define ASCII_65 KEY_E // 101 e
  817. #define ASCII_66 KEY_F // 102 f
  818. #define ASCII_67 KEY_G // 103 g
  819. #define ASCII_68 KEY_H // 104 h
  820. #define ASCII_69 KEY_I // 105 i
  821. #define ASCII_6A KEY_J // 106 j
  822. #define ASCII_6B KEY_K // 107 k
  823. #define ASCII_6C KEY_L // 108 l
  824. #define ASCII_6D KEY_M // 109 m
  825. #define ASCII_6E KEY_N // 110 n
  826. #define ASCII_6F KEY_O // 111 o
  827. #define ASCII_70 KEY_P // 112 p
  828. #define ASCII_71 KEY_Q // 113 q
  829. #define ASCII_72 KEY_R // 114 r
  830. #define ASCII_73 KEY_S // 115 s
  831. #define ASCII_74 KEY_T // 116 t
  832. #define ASCII_75 KEY_U // 117 u
  833. #define ASCII_76 KEY_V // 118 v
  834. #define ASCII_77 KEY_W // 119 w
  835. #define ASCII_78 KEY_X // 120 x
  836. #define ASCII_79 KEY_Z // 121 y
  837. #define ASCII_7A KEY_Y // 122 z
  838. #define ASCII_7B KEY_8 + ALTGR_MASK // 123 {
  839. #define ASCII_7C KEY_7 + ALTGR_MASK // 124 |
  840. #define ASCII_7D KEY_9 + ALTGR_MASK // 125 }
  841. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  842. #define ASCII_7F KEY_BACKSPACE // 127
  843. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  844. #define ISO_8859_1_A1 KEY_1 + ALTGR_MASK // 161 ¡ Inverted Exclamation
  845. #define ISO_8859_1_A2 KEY_4 + ALTGR_MASK // 162 ¢ Cent Sign
  846. #define ISO_8859_1_A3 KEY_4 + SHIFT_MASK + ALTGR_MASK // 163 £ Pound Sign
  847. #define ISO_8859_1_A4 KEY_E + ALTGR_MASK // 164 ¤ Currency Sign
  848. #define ISO_8859_1_A5 KEY_Z + ALTGR_MASK // 165 ¥ YEN SIGN
  849. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  850. #define ISO_8859_1_A7 KEY_3 + SHIFT_MASK // 167 § SECTION SIGN
  851. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  852. #define ISO_8859_1_A9 KEY_G + ALTGR_MASK // 169 © COPYRIGHT SIGN
  853. #define ISO_8859_1_AA KEY_H + ALTGR_MASK // 170 ª FEMININE ORDINAL
  854. #define ISO_8859_1_AB KEY_Q + ALTGR_MASK // 171 « LEFT DOUBLE ANGLE QUOTE
  855. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  856. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  857. #define ISO_8859_1_AE KEY_R + ALTGR_MASK // 174 ® REGISTERED SIGN
  858. #define ISO_8859_1_AF KEY_0 + SHIFT_MASK + ALTGR_MASK // 175 ¯ MACRON
  859. #define ISO_8859_1_B0 KEY_LEFT_BRACE + ALTGR_MASK + SHIFT_MASK// 176 ° DEGREE SIGN
  860. #define ISO_8859_1_B1 KEY_RIGHT_BRACE + ALTGR_MASK // 177 ± PLUS-MINUS SIGN
  861. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  862. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  863. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  864. #define ISO_8859_1_B5 KEY_M + ALTGR_MASK // 181 µ MICRO SIGN
  865. #define ISO_8859_1_B6 KEY_3 + ALTGR_MASK // 182 ¶ PILCROW SIGN
  866. #define ISO_8859_1_B7 KEY_9 + SHIFT_MASK + ALTGR_MASK // 183 · MIDDLE DOT
  867. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  868. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  869. #define ISO_8859_1_BA KEY_J + ALTGR_MASK // 186 º MASCULINE ORDINAL
  870. #define ISO_8859_1_BB KEY_Q + SHIFT_MASK + ALTGR_MASK // 187 » RIGHT DOUBLE ANGLE QUOTE
  871. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  872. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  873. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  874. #define ISO_8859_1_BF KEY_MINUS + ALTGR_MASK // 191 ¿ INVERTED QUESTION MARK
  875. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  876. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  877. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  878. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  879. #define ISO_8859_1_C4 KEY_QUOTE + SHIFT_MASK // 196 Ä A DIAERESIS
  880. #define ISO_8859_1_C5 KEY_A + ALTGR_MASK + SHIFT_MASK // 197 Å A RING ABOVE
  881. #define ISO_8859_1_C6 KEY_QUOTE + ALTGR_MASK + SHIFT_MASK // 198 Æ AE
  882. #define ISO_8859_1_C7 KEY_C + ALTGR_MASK + SHIFT_MASK // 199 Ç C CEDILLA
  883. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  884. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  885. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  886. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  887. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  888. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  889. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  890. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  891. #define ISO_8859_1_D0 0 // 208 Ð ETH
  892. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  893. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  894. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  895. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  896. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  897. #define ISO_8859_1_D6 KEY_SEMICOLON + SHIFT_MASK // 214 Ö O DIAERESIS
  898. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  899. #define ISO_8859_1_D8 KEY_O + ALTGR_MASK + SHIFT_MASK // 216 Ø O STROKE
  900. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  901. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  902. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  903. #define ISO_8859_1_DC KEY_LEFT_BRACE + SHIFT_MASK // 220 Ü U DIAERESIS
  904. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Z + SHIFT_MASK // 221 Ý Y ACUTE
  905. #define ISO_8859_1_DE 0 // 222 Þ THORN
  906. #define ISO_8859_1_DF KEY_MINUS // 223 ß SHARP S
  907. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  908. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  909. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  910. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  911. #define ISO_8859_1_E4 KEY_QUOTE // 228 ä a DIAERESIS
  912. #define ISO_8859_1_E5 KEY_A + ALTGR_MASK // 229 å a RING ABOVE
  913. #define ISO_8859_1_E6 KEY_QUOTE + ALTGR_MASK // 230 æ ae
  914. #define ISO_8859_1_E7 KEY_C + ALTGR_MASK // 231 ç c CEDILLA
  915. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  916. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  917. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  918. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  919. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  920. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  921. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  922. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  923. #define ISO_8859_1_F0 0 // 240 ð ETH
  924. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  925. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  926. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  927. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  928. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  929. #define ISO_8859_1_F6 KEY_SEMICOLON // 246 ö o DIAERESIS
  930. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  931. #define ISO_8859_1_F8 KEY_O + ALTGR_MASK // 248 ø o STROKE
  932. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  933. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  934. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  935. #define ISO_8859_1_FC KEY_LEFT_BRACE // 252 ü u DIAERESIS
  936. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Z // 253 ý y ACUTE
  937. #define ISO_8859_1_FE 0 // 254 þ THORN
  938. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Z // 255 ÿ y DIAERESIS
  939. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  940. // not yet implemented
  941. #define UNICODE_EXTRA00 0x20AC
  942. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  943. #endif // LAYOUT_GERMAN_MAC
  944. #ifdef LAYOUT_CANADIAN_FRENCH
  945. #define SHIFT_MASK 0x0040
  946. #define ALTGR_MASK 0x0080
  947. #define DEADKEYS_MASK 0x0700
  948. #define CIRCUMFLEX_BITS 0x0100
  949. #define ACUTE_ACCENT_BITS 0x0200
  950. #define GRAVE_ACCENT_BITS 0x0300
  951. #define DIAERESIS_BITS 0x0400
  952. #define CEDILLA_BITS 0x0500
  953. #define KEYCODE_TYPE uint16_t
  954. #define DEADKEY_CIRCUMFLEX KEY_LEFT_BRACE
  955. #define DEADKEY_ACUTE_ACCENT KEY_SLASH + ALTGR_MASK
  956. #define DEADKEY_GRAVE_ACCENT KEY_QUOTE
  957. #define DEADKEY_DIAERESIS KEY_RIGHT_BRACE + SHIFT_MASK
  958. #define DEADKEY_CEDILLA KEY_RIGHT_BRACE
  959. #define KEY_NON_US_100 63
  960. #define ASCII_20 KEY_SPACE // 32
  961. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  962. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  963. #define ASCII_23 KEY_TILDE + SHIFT_MASK // 35 #
  964. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  965. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  966. #define ASCII_26 KEY_7 + SHIFT_MASK // 38 &
  967. #define ASCII_27 KEY_COMMA + SHIFT_MASK // 39 '
  968. //#define ASCII_27 ACUTE_ACCENT_BITS + KEY_SPACE // 39 '
  969. #define ASCII_28 KEY_9 + SHIFT_MASK // 40 (
  970. #define ASCII_29 KEY_0 + SHIFT_MASK // 41 )
  971. #define ASCII_2A KEY_8 + SHIFT_MASK // 42 *
  972. #define ASCII_2B KEY_EQUAL + SHIFT_MASK // 43 +
  973. #define ASCII_2C KEY_COMMA // 44 ,
  974. #define ASCII_2D KEY_MINUS // 45 -
  975. #define ASCII_2E KEY_PERIOD // 46 .
  976. #define ASCII_2F KEY_3 + SHIFT_MASK // 47 /
  977. #define ASCII_30 KEY_0 // 48 0
  978. #define ASCII_31 KEY_1 // 49 1
  979. #define ASCII_32 KEY_2 // 50 2
  980. #define ASCII_33 KEY_3 // 51 3
  981. #define ASCII_34 KEY_4 // 52 4
  982. #define ASCII_35 KEY_5 // 53 5
  983. #define ASCII_36 KEY_6 // 54 6
  984. #define ASCII_37 KEY_7 // 55 7
  985. #define ASCII_38 KEY_8 // 55 8
  986. #define ASCII_39 KEY_9 // 57 9
  987. #define ASCII_3A KEY_SEMICOLON + SHIFT_MASK // 58 :
  988. #define ASCII_3B KEY_SEMICOLON // 59 ;
  989. #define ASCII_3C KEY_BACKSLASH // 60 <
  990. #define ASCII_3D KEY_EQUAL // 61 =
  991. #define ASCII_3E KEY_BACKSLASH + SHIFT_MASK // 62 >
  992. #define ASCII_3F KEY_6 + SHIFT_MASK // 63 ?
  993. #define ASCII_40 KEY_2 + ALTGR_MASK // 64 @
  994. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  995. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  996. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  997. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  998. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  999. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  1000. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  1001. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  1002. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  1003. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  1004. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  1005. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  1006. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  1007. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  1008. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  1009. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  1010. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  1011. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  1012. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  1013. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  1014. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  1015. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  1016. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  1017. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  1018. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  1019. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  1020. #define ASCII_5B KEY_LEFT_BRACE + ALTGR_MASK // 91 [
  1021. #define ASCII_5C KEY_TILDE + ALTGR_MASK // 92
  1022. #define ASCII_5D KEY_RIGHT_BRACE + ALTGR_MASK // 93 ]
  1023. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  1024. #define ASCII_5F KEY_MINUS + SHIFT_MASK // 95 _
  1025. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  1026. #define ASCII_61 KEY_A // 97 a
  1027. #define ASCII_62 KEY_B // 98 b
  1028. #define ASCII_63 KEY_C // 99 c
  1029. #define ASCII_64 KEY_D // 100 d
  1030. #define ASCII_65 KEY_E // 101 e
  1031. #define ASCII_66 KEY_F // 102 f
  1032. #define ASCII_67 KEY_G // 103 g
  1033. #define ASCII_68 KEY_H // 104 h
  1034. #define ASCII_69 KEY_I // 105 i
  1035. #define ASCII_6A KEY_J // 106 j
  1036. #define ASCII_6B KEY_K // 107 k
  1037. #define ASCII_6C KEY_L // 108 l
  1038. #define ASCII_6D KEY_M // 109 m
  1039. #define ASCII_6E KEY_N // 110 n
  1040. #define ASCII_6F KEY_O // 111 o
  1041. #define ASCII_70 KEY_P // 112 p
  1042. #define ASCII_71 KEY_Q // 113 q
  1043. #define ASCII_72 KEY_R // 114 r
  1044. #define ASCII_73 KEY_S // 115 s
  1045. #define ASCII_74 KEY_T // 116 t
  1046. #define ASCII_75 KEY_U // 117 u
  1047. #define ASCII_76 KEY_V // 118 v
  1048. #define ASCII_77 KEY_W // 119 w
  1049. #define ASCII_78 KEY_X // 120 x
  1050. #define ASCII_79 KEY_Y // 121 y
  1051. #define ASCII_7A KEY_Z // 122 z
  1052. #define ASCII_7B KEY_QUOTE + ALTGR_MASK // 123 {
  1053. #define ASCII_7C KEY_TILDE + SHIFT_MASK // 124 |
  1054. #define ASCII_7D KEY_BACKSLASH + ALTGR_MASK // 125 }
  1055. #define ASCII_7E KEY_SEMICOLON + ALTGR_MASK // 126 ~
  1056. #define ASCII_7F KEY_BACKSPACE // 127
  1057. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  1058. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  1059. #define ISO_8859_1_A2 KEY_4 + ALTGR_MASK // 162 ¢ Cent SIGN
  1060. #define ISO_8859_1_A3 KEY_3 + ALTGR_MASK // 163 £ Pound Sign
  1061. #define ISO_8859_1_A4 KEY_5 + ALTGR_MASK // 164 ¤ Currency or Euro Sign
  1062. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  1063. #define ISO_8859_1_A6 KEY_7 + ALTGR_MASK // 166 ¦ BROKEN BAR
  1064. #define ISO_8859_1_A7 KEY_O + ALTGR_MASK // 167 § SECTION SIGN
  1065. #define ISO_8859_1_A8 0 // 168 ¨ DIAERESIS
  1066. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  1067. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  1068. #define ISO_8859_1_AB KEY_NON_US_100 // 171 « LEFT DOUBLE ANGLE QUOTE
  1069. #define ISO_8859_1_AC KEY_6 + ALTGR_MASK // 172 ¬ NOT SIGN
  1070. #define ISO_8859_1_AD KEY_PERIOD + ALTGR_MASK // 173 SOFT HYPHEN
  1071. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  1072. #define ISO_8859_1_AF KEY_COMMA + ALTGR_MASK // 175 ¯ MACRON
  1073. #define ISO_8859_1_B0 KEY_NON_US_100 + ALTGR_MASK // 176 ° DEGREE SIGN
  1074. #define ISO_8859_1_B1 KEY_1 + ALTGR_MASK // 177 ± PLUS-MINUS SIGN
  1075. #define ISO_8859_1_B2 KEY_8 + ALTGR_MASK // 178 ² SUPERSCRIPT TWO
  1076. #define ISO_8859_1_B3 KEY_9 + ALTGR_MASK // 179 ³ SUPERSCRIPT THREE
  1077. #define ISO_8859_1_B4 0 // 180 ´ ACUTE ACCENT
  1078. #define ISO_8859_1_B5 KEY_M + ALTGR_MASK // 181 µ MICRO SIGN
  1079. #define ISO_8859_1_B6 KEY_P + ALTGR_MASK // 182 ¶ PILCROW SIGN
  1080. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  1081. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  1082. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  1083. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  1084. #define ISO_8859_1_BB KEY_NON_US_100 + SHIFT_MASK // 187 » RIGHT DOUBLE ANGLE QUOTE
  1085. #define ISO_8859_1_BC KEY_0 + ALTGR_MASK // 188 ¼ FRACTION ONE QUARTER
  1086. #define ISO_8859_1_BD KEY_MINUS + ALTGR_MASK // 189 ½ FRACTION ONE HALF
  1087. #define ISO_8859_1_BE KEY_EQUAL + ALTGR_MASK // 190 ¾ FRACTION THREE QUARTERS
  1088. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  1089. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  1090. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  1091. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  1092. #define ISO_8859_1_C3 0 // 195 Ã A TILDE
  1093. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  1094. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  1095. #define ISO_8859_1_C6 0 // 198 Æ AE
  1096. #define ISO_8859_1_C7 CEDILLA_BITS + KEY_C + SHIFT_MASK // 199 Ç C CEDILLA
  1097. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  1098. #define ISO_8859_1_C9 KEY_SLASH + SHIFT_MASK // 201 É E ACUTE
  1099. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  1100. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  1101. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  1102. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  1103. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  1104. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  1105. #define ISO_8859_1_D0 0 // 208 Ð ETH
  1106. #define ISO_8859_1_D1 0 // 209 Ñ N TILDE
  1107. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  1108. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  1109. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  1110. #define ISO_8859_1_D5 0 // 213 Õ O TILDE
  1111. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  1112. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  1113. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  1114. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  1115. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  1116. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  1117. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U // 220 Ü U DIAERESIS
  1118. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  1119. #define ISO_8859_1_DE 0 // 222 Þ THORN
  1120. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  1121. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  1122. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  1123. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  1124. #define ISO_8859_1_E3 0 // 227 ã a TILDE
  1125. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  1126. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  1127. #define ISO_8859_1_E6 0 // 230 æ ae
  1128. #define ISO_8859_1_E7 CEDILLA_BITS + KEY_C // 231 ç c CEDILLA
  1129. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  1130. #define ISO_8859_1_E9 KEY_SLASH // 233 é e ACUTE
  1131. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  1132. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  1133. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  1134. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  1135. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  1136. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  1137. #define ISO_8859_1_F0 0 // 240 ð ETH
  1138. #define ISO_8859_1_F1 0 // 241 ñ n TILDE
  1139. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  1140. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  1141. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  1142. #define ISO_8859_1_F5 0 // 245 õ o TILDE
  1143. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  1144. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  1145. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  1146. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  1147. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  1148. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  1149. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  1150. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  1151. #define ISO_8859_1_FE 0 // 254 þ THORN
  1152. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  1153. #endif // LAYOUT_CANADIAN_FRENCH
  1154. #ifdef LAYOUT_CANADIAN_MULTILINGUAL
  1155. #define SHIFT_MASK 0x0040
  1156. #define ALTGR_MASK 0x0080
  1157. #define RCTRL_MASK 0x0800
  1158. #define DEADKEYS_MASK 0x0700
  1159. #define CIRCUMFLEX_BITS 0x0100
  1160. #define DIAERESIS_BITS 0x0200
  1161. #define ACUTE_ACCENT_BITS 0x0300
  1162. #define CEDILLA_BITS 0x0400
  1163. #define GRAVE_ACCENT_BITS 0x0500
  1164. #define TILDE_BITS 0x0600
  1165. #define RING_ABOVE_BITS 0x0700
  1166. #define KEYCODE_TYPE uint16_t
  1167. #define DEADKEY_CIRCUMFLEX KEY_LEFT_BRACE
  1168. #define DEADKEY_DIAERESIS KEY_LEFT_BRACE + SHIFT_MASK
  1169. #define DEADKEY_ACUTE_ACCENT KEY_SEMICOLON + RCTRL_MASK
  1170. #define DEADKEY_CEDILLA KEY_EQUAL + RCTRL_MASK
  1171. #define DEADKEY_GRAVE_ACCENT KEY_LEFT_BRACE + ALTGR_MASK
  1172. #define DEADKEY_TILDE KEY_RIGHT_BRACE + ALTGR_MASK
  1173. #define DEADKEY_RING_ABOVE KEY_LEFT_BRACE + SHIFT_MASK + RCTRL_MASK
  1174. #define KEY_NON_US_100 63
  1175. #define ASCII_20 KEY_SPACE // 32
  1176. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  1177. #define ASCII_22 KEY_PERIOD + SHIFT_MASK // 34 "
  1178. #define ASCII_23 KEY_3 + SHIFT_MASK // 35 #
  1179. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  1180. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  1181. #define ASCII_26 KEY_7 + SHIFT_MASK // 38 &
  1182. #define ASCII_27 KEY_COMMA + SHIFT_MASK // 39 '
  1183. #define ASCII_28 KEY_9 + SHIFT_MASK // 40 (
  1184. #define ASCII_29 KEY_0 + SHIFT_MASK // 41 )
  1185. #define ASCII_2A KEY_8 + SHIFT_MASK // 42 *
  1186. #define ASCII_2B KEY_EQUAL + SHIFT_MASK // 43 +
  1187. #define ASCII_2C KEY_COMMA // 44 ,
  1188. #define ASCII_2D KEY_MINUS // 45 -
  1189. #define ASCII_2E KEY_PERIOD // 46 .
  1190. #define ASCII_2F KEY_TILDE // 47 /
  1191. #define ASCII_30 KEY_0 // 48 0
  1192. #define ASCII_31 KEY_1 // 49 1
  1193. #define ASCII_32 KEY_2 // 50 2
  1194. #define ASCII_33 KEY_3 // 51 3
  1195. #define ASCII_34 KEY_4 // 52 4
  1196. #define ASCII_35 KEY_5 // 53 5
  1197. #define ASCII_36 KEY_6 // 54 6
  1198. #define ASCII_37 KEY_7 // 55 7
  1199. #define ASCII_38 KEY_8 // 55 8
  1200. #define ASCII_39 KEY_9 // 57 9
  1201. #define ASCII_3A KEY_SEMICOLON + SHIFT_MASK // 58 :
  1202. #define ASCII_3B KEY_SEMICOLON // 59 ;
  1203. #define ASCII_3C KEY_COMMA + ALTGR_MASK // 60 <
  1204. #define ASCII_3D KEY_EQUAL // 61 =
  1205. #define ASCII_3E KEY_PERIOD + ALTGR_MASK // 62 >
  1206. #define ASCII_3F KEY_6 + SHIFT_MASK // 63 ?
  1207. #define ASCII_40 KEY_2 + SHIFT_MASK // 64 @
  1208. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  1209. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  1210. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  1211. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  1212. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  1213. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  1214. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  1215. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  1216. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  1217. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  1218. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  1219. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  1220. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  1221. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  1222. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  1223. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  1224. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  1225. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  1226. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  1227. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  1228. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  1229. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  1230. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  1231. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  1232. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  1233. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  1234. #define ASCII_5B KEY_9 + ALTGR_MASK // 91 [
  1235. #define ASCII_5C KEY_TILDE + SHIFT_MASK // 92
  1236. #define ASCII_5D KEY_0 + ALTGR_MASK // 93 ]
  1237. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  1238. #define ASCII_5F KEY_MINUS + SHIFT_MASK // 95 _
  1239. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  1240. #define ASCII_61 KEY_A // 97 a
  1241. #define ASCII_62 KEY_B // 98 b
  1242. #define ASCII_63 KEY_C // 99 c
  1243. #define ASCII_64 KEY_D // 100 d
  1244. #define ASCII_65 KEY_E // 101 e
  1245. #define ASCII_66 KEY_F // 102 f
  1246. #define ASCII_67 KEY_G // 103 g
  1247. #define ASCII_68 KEY_H // 104 h
  1248. #define ASCII_69 KEY_I // 105 i
  1249. #define ASCII_6A KEY_J // 106 j
  1250. #define ASCII_6B KEY_K // 107 k
  1251. #define ASCII_6C KEY_L // 108 l
  1252. #define ASCII_6D KEY_M // 109 m
  1253. #define ASCII_6E KEY_N // 110 n
  1254. #define ASCII_6F KEY_O // 111 o
  1255. #define ASCII_70 KEY_P // 112 p
  1256. #define ASCII_71 KEY_Q // 113 q
  1257. #define ASCII_72 KEY_R // 114 r
  1258. #define ASCII_73 KEY_S // 115 s
  1259. #define ASCII_74 KEY_T // 116 t
  1260. #define ASCII_75 KEY_U // 117 u
  1261. #define ASCII_76 KEY_V // 118 v
  1262. #define ASCII_77 KEY_W // 119 w
  1263. #define ASCII_78 KEY_X // 120 x
  1264. #define ASCII_79 KEY_Y // 121 y
  1265. #define ASCII_7A KEY_Z // 122 z
  1266. #define ASCII_7B KEY_7 + ALTGR_MASK // 123 {
  1267. #define ASCII_7C KEY_TILDE + ALTGR_MASK // 124 |
  1268. #define ASCII_7D KEY_8 + ALTGR_MASK // 125 }
  1269. #define ASCII_7E KEY_RIGHT_BRACE + RCTRL_MASK // 126 ~
  1270. #define ASCII_7F KEY_BACKSPACE // 127
  1271. #define ISO_8859_1_A0 KEY_SPACE + ALTGR_MASK // 160 Nonbreakng Space
  1272. #define ISO_8859_1_A1 KEY_1 + SHIFT_MASK + RCTRL_MASK // 161 ¡ Inverted Exclamation
  1273. #define ISO_8859_1_A2 KEY_C + RCTRL_MASK // 162 ¢ Cent SIGN
  1274. #define ISO_8859_1_A3 KEY_3 + SHIFT_MASK + RCTRL_MASK // 163 £ Pound Sign
  1275. #define ISO_8859_1_A4 KEY_4 + SHIFT_MASK + RCTRL_MASK // 164 ¤ Currency or Euro Sign
  1276. #define ISO_8859_1_A5 KEY_Y + SHIFT_MASK + RCTRL_MASK // 165 ¥ YEN SIGN
  1277. #define ISO_8859_1_A6 KEY_NON_US_100 + SHIFT_MASK + RCTRL_MASK// 166 ¦ BROKEN BAR
  1278. #define ISO_8859_1_A7 KEY_S + SHIFT_MASK + RCTRL_MASK // 167 § SECTION SIGN
  1279. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  1280. #define ISO_8859_1_A9 KEY_C + SHIFT_MASK + RCTRL_MASK // 169 © COPYRIGHT SIGN
  1281. #define ISO_8859_1_AA KEY_F + SHIFT_MASK + RCTRL_MASK // 170 ª FEMININE ORDINAL
  1282. #define ISO_8859_1_AB KEY_Z + ALTGR_MASK // 171 « LEFT DOUBLE ANGLE QUOTE
  1283. #define ISO_8859_1_AC KEY_EQUAL + ALTGR_MASK // 172 ¬ NOT SIGN
  1284. #define ISO_8859_1_AD KEY_TILDE + SHIFT_MASK + RCTRL_MASK // 173 SOFT HYPHEN
  1285. #define ISO_8859_1_AE KEY_R + SHIFT_MASK + RCTRL_MASK // 174 ® REGISTERED SIGN
  1286. #define ISO_8859_1_AF 0 // special dead key - no implemented // 175 ¯ MACRON
  1287. #define ISO_8859_1_B0 KEY_SEMICOLON + ALTGR_MASK // 176 ° DEGREE SIGN
  1288. #define ISO_8859_1_B1 KEY_9 + SHIFT_MASK + RCTRL_MASK // 177 ± PLUS-MINUS SIGN
  1289. #define ISO_8859_1_B2 KEY_2 + RCTRL_MASK // 178 ² SUPERSCRIPT TWO
  1290. #define ISO_8859_1_B3 KEY_3 + RCTRL_MASK // 179 ³ SUPERSCRIPT THREE
  1291. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  1292. #define ISO_8859_1_B5 KEY_M + RCTRL_MASK // 181 µ MICRO SIGN
  1293. #define ISO_8859_1_B6 KEY_R + RCTRL_MASK // 182 ¶ PILCROW SIGN
  1294. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  1295. #define ISO_8859_1_B8 CEDILLA_BITS + KEY_SPACE // 184 ¸ CEDILLA
  1296. #define ISO_8859_1_B9 KEY_1 + RCTRL_MASK // 185 ¹ SUPERSCRIPT ONE
  1297. #define ISO_8859_1_BA KEY_M + SHIFT_MASK + RCTRL_MASK // 186 º MASCULINE ORDINAL
  1298. #define ISO_8859_1_BB KEY_X + ALTGR_MASK // 187 » RIGHT DOUBLE ANGLE QUOTE
  1299. #define ISO_8859_1_BC KEY_4 + RCTRL_MASK // 188 ¼ FRACTION ONE QUARTER
  1300. #define ISO_8859_1_BD KEY_5 + RCTRL_MASK // 189 ½ FRACTION ONE HALF
  1301. #define ISO_8859_1_BE KEY_6 + RCTRL_MASK // 190 ¾ FRACTION THREE QUARTERS
  1302. #define ISO_8859_1_BF KEY_MINUS + SHIFT_MASK + RCTRL_MASK // 191 ¿ INVERTED QUESTION MARK
  1303. #define ISO_8859_1_C0 KEY_BACKSLASH + SHIFT_MASK // 192 À A GRAVE
  1304. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  1305. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  1306. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  1307. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  1308. #define ISO_8859_1_C5 RING_ABOVE_BITS + KEY_A + SHIFT_MASK // 197 Å A RING ABOVE
  1309. #define ISO_8859_1_C6 KEY_A + SHIFT_MASK + RCTRL_MASK // 198 Æ AE
  1310. #define ISO_8859_1_C7 KEY_RIGHT_BRACE + SHIFT_MASK // 199 Ç C CEDILLA
  1311. #define ISO_8859_1_C8 KEY_QUOTE + SHIFT_MASK // 200 È E GRAVE
  1312. #define ISO_8859_1_C9 KEY_SLASH + SHIFT_MASK // 201 É E ACUTE
  1313. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  1314. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  1315. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  1316. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  1317. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  1318. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  1319. #define ISO_8859_1_D0 KEY_D + SHIFT_MASK + RCTRL_MASK // 208 Ð ETH
  1320. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  1321. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  1322. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  1323. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  1324. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  1325. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  1326. #define ISO_8859_1_D7 KEY_COMMA + SHIFT_MASK + RCTRL_MASK // 215 × MULTIPLICATION
  1327. #define ISO_8859_1_D8 KEY_O + SHIFT_MASK + RCTRL_MASK // 216 Ø O STROKE
  1328. #define ISO_8859_1_D9 KEY_NON_US_100 + SHIFT_MASK // 217 Ù U GRAVE
  1329. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  1330. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  1331. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U // 220 Ü U DIAERESIS
  1332. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  1333. #define ISO_8859_1_DE KEY_P + RCTRL_MASK + SHIFT_MASK // 222 Þ THORN
  1334. #define ISO_8859_1_DF KEY_S + RCTRL_MASK // 223 ß SHARP S
  1335. #define ISO_8859_1_E0 KEY_BACKSLASH // 224 à a GRAVE
  1336. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  1337. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  1338. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  1339. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  1340. #define ISO_8859_1_E5 RING_ABOVE_BITS + KEY_A // 229 å a RING ABOVE
  1341. #define ISO_8859_1_E6 KEY_A + RCTRL_MASK // 230 æ ae
  1342. #define ISO_8859_1_E7 KEY_RIGHT_BRACE // 231 ç c CEDILLA
  1343. #define ISO_8859_1_E8 KEY_QUOTE // 232 è e GRAVE
  1344. #define ISO_8859_1_E9 KEY_SLASH // 233 é e ACUTE
  1345. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  1346. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  1347. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  1348. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  1349. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  1350. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  1351. #define ISO_8859_1_F0 KEY_D + RCTRL_MASK // 240 ð ETH
  1352. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  1353. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  1354. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  1355. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  1356. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  1357. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  1358. #define ISO_8859_1_F7 KEY_PERIOD + SHIFT_MASK + RCTRL_MASK // 247 ÷ DIVISION
  1359. #define ISO_8859_1_F8 KEY_O + RCTRL_MASK // 248 ø o STROKE
  1360. #define ISO_8859_1_F9 KEY_NON_US_100 // 249 ù u GRAVE
  1361. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  1362. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  1363. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  1364. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  1365. #define ISO_8859_1_FE KEY_P + RCTRL_MASK // 254 þ THORN
  1366. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  1367. #endif // LAYOUT_CANADIAN_MULTILINGUAL
  1368. #ifdef LAYOUT_UNITED_KINGDOM
  1369. #define SHIFT_MASK 0x0040
  1370. #define ALTGR_MASK 0x0080
  1371. #define KEYCODE_TYPE uint8_t
  1372. #define KEY_NON_US_100 63
  1373. #define ASCII_20 KEY_SPACE // 32
  1374. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  1375. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  1376. #define ASCII_23 KEY_BACKSPACE // 35 #
  1377. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  1378. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  1379. #define ASCII_26 KEY_7 + SHIFT_MASK // 38 &
  1380. #define ASCII_27 KEY_QUOTE // 39 '
  1381. #define ASCII_28 KEY_9 + SHIFT_MASK // 40 (
  1382. #define ASCII_29 KEY_0 + SHIFT_MASK // 41 )
  1383. #define ASCII_2A KEY_8 + SHIFT_MASK // 42 *
  1384. #define ASCII_2B KEY_EQUAL + SHIFT_MASK // 43 +
  1385. #define ASCII_2C KEY_COMMA // 44 ,
  1386. #define ASCII_2D KEY_MINUS // 45 -
  1387. #define ASCII_2E KEY_PERIOD // 46 .
  1388. #define ASCII_2F KEY_SLASH // 47 /
  1389. #define ASCII_30 KEY_0 // 48 0
  1390. #define ASCII_31 KEY_1 // 49 1
  1391. #define ASCII_32 KEY_2 // 50 2
  1392. #define ASCII_33 KEY_3 // 51 3
  1393. #define ASCII_34 KEY_4 // 52 4
  1394. #define ASCII_35 KEY_5 // 53 5
  1395. #define ASCII_36 KEY_6 // 54 6
  1396. #define ASCII_37 KEY_7 // 55 7
  1397. #define ASCII_38 KEY_8 // 55 8
  1398. #define ASCII_39 KEY_9 // 57 9
  1399. #define ASCII_3A KEY_SEMICOLON + SHIFT_MASK // 58 :
  1400. #define ASCII_3B KEY_SEMICOLON // 59 ;
  1401. #define ASCII_3C KEY_COMMA + SHIFT_MASK // 60 <
  1402. #define ASCII_3D KEY_EQUAL // 61 =
  1403. #define ASCII_3E KEY_PERIOD + SHIFT_MASK // 62 >
  1404. #define ASCII_3F KEY_SLASH + SHIFT_MASK // 63 ?
  1405. #define ASCII_40 KEY_QUOTE + SHIFT_MASK // 64 @
  1406. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  1407. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  1408. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  1409. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  1410. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  1411. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  1412. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  1413. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  1414. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  1415. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  1416. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  1417. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  1418. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  1419. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  1420. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  1421. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  1422. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  1423. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  1424. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  1425. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  1426. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  1427. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  1428. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  1429. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  1430. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  1431. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  1432. #define ASCII_5B KEY_LEFT_BRACE // 91 [
  1433. #define ASCII_5C KEY_NON_US_100 // 92
  1434. #define ASCII_5D KEY_RIGHT_BRACE // 93 ]
  1435. #define ASCII_5E KEY_6 + SHIFT_MASK // 94 ^
  1436. #define ASCII_5F KEY_MINUS + SHIFT_MASK // 95 _
  1437. #define ASCII_60 KEY_TILDE // 96 `
  1438. #define ASCII_61 KEY_A // 97 a
  1439. #define ASCII_62 KEY_B // 98 b
  1440. #define ASCII_63 KEY_C // 99 c
  1441. #define ASCII_64 KEY_D // 100 d
  1442. #define ASCII_65 KEY_E // 101 e
  1443. #define ASCII_66 KEY_F // 102 f
  1444. #define ASCII_67 KEY_G // 103 g
  1445. #define ASCII_68 KEY_H // 104 h
  1446. #define ASCII_69 KEY_I // 105 i
  1447. #define ASCII_6A KEY_J // 106 j
  1448. #define ASCII_6B KEY_K // 107 k
  1449. #define ASCII_6C KEY_L // 108 l
  1450. #define ASCII_6D KEY_M // 109 m
  1451. #define ASCII_6E KEY_N // 110 n
  1452. #define ASCII_6F KEY_O // 111 o
  1453. #define ASCII_70 KEY_P // 112 p
  1454. #define ASCII_71 KEY_Q // 113 q
  1455. #define ASCII_72 KEY_R // 114 r
  1456. #define ASCII_73 KEY_S // 115 s
  1457. #define ASCII_74 KEY_T // 116 t
  1458. #define ASCII_75 KEY_U // 117 u
  1459. #define ASCII_76 KEY_V // 118 v
  1460. #define ASCII_77 KEY_W // 119 w
  1461. #define ASCII_78 KEY_X // 120 x
  1462. #define ASCII_79 KEY_Y // 121 y
  1463. #define ASCII_7A KEY_Z // 122 z
  1464. #define ASCII_7B KEY_LEFT_BRACE + SHIFT_MASK // 123 {
  1465. #define ASCII_7C KEY_NON_US_100 + SHIFT_MASK // 124 |
  1466. #define ASCII_7D KEY_RIGHT_BRACE + SHIFT_MASK // 125 }
  1467. #define ASCII_7E KEY_BACKSLASH + SHIFT_MASK // 126 ~
  1468. #define ASCII_7F KEY_BACKSPACE // 127
  1469. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  1470. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  1471. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  1472. #define ISO_8859_1_A3 KEY_3 + SHIFT_MASK // 163 £ Pound Sign
  1473. #define ISO_8859_1_A4 0 // 164 ¤ Currency or Euro Sign
  1474. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  1475. #define ISO_8859_1_A6 KEY_TILDE + ALTGR_MASK // 166 ¦ BROKEN BAR
  1476. #define ISO_8859_1_A7 0 // 167 § SECTION SIGN
  1477. #define ISO_8859_1_A8 0 // 168 ¨ DIAERESIS
  1478. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  1479. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  1480. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  1481. #define ISO_8859_1_AC KEY_TILDE + SHIFT_MASK // 172 ¬ NOT SIGN
  1482. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  1483. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  1484. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  1485. #define ISO_8859_1_B0 0 // 176 ° DEGREE SIGN
  1486. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  1487. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  1488. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  1489. #define ISO_8859_1_B4 0 // 180 ´ ACUTE ACCENT
  1490. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  1491. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  1492. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  1493. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  1494. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  1495. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  1496. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  1497. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  1498. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  1499. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  1500. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  1501. #define ISO_8859_1_C0 0 // 192 À A GRAVE
  1502. #define ISO_8859_1_C1 KEY_A + ALTGR_MASK + SHIFT_MASK // 193 Á A ACUTE
  1503. #define ISO_8859_1_C2 0 // 194 Â A CIRCUMFLEX
  1504. #define ISO_8859_1_C3 0 // 195 Ã A TILDE
  1505. #define ISO_8859_1_C4 0 // 196 Ä A DIAERESIS
  1506. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  1507. #define ISO_8859_1_C6 0 // 198 Æ AE
  1508. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  1509. #define ISO_8859_1_C8 0 // 200 È E GRAVE
  1510. #define ISO_8859_1_C9 KEY_E + ALTGR_MASK + SHIFT_MASK // 201 É E ACUTE
  1511. #define ISO_8859_1_CA 0 // 202 Ê E CIRCUMFLEX
  1512. #define ISO_8859_1_CB 0 // 203 Ë E DIAERESIS
  1513. #define ISO_8859_1_CC 0 // 204 Ì I GRAVE
  1514. #define ISO_8859_1_CD KEY_I + ALTGR_MASK + SHIFT_MASK // 205 Í I ACUTE
  1515. #define ISO_8859_1_CE 0 // 206 Î I CIRCUMFLEX
  1516. #define ISO_8859_1_CF 0 // 207 Ï I DIAERESIS
  1517. #define ISO_8859_1_D0 0 // 208 Ð ETH
  1518. #define ISO_8859_1_D1 0 // 209 Ñ N TILDE
  1519. #define ISO_8859_1_D2 0 // 210 Ò O GRAVE
  1520. #define ISO_8859_1_D3 KEY_O + ALTGR_MASK + SHIFT_MASK // 211 Ó O ACUTE
  1521. #define ISO_8859_1_D4 0 // 212 Ô O CIRCUMFLEX
  1522. #define ISO_8859_1_D5 0 // 213 Õ O TILDE
  1523. #define ISO_8859_1_D6 0 // 214 Ö O DIAERESIS
  1524. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  1525. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  1526. #define ISO_8859_1_D9 0 // 217 Ù U GRAVE
  1527. #define ISO_8859_1_DA KEY_U + ALTGR_MASK + SHIFT_MASK // 218 Ú U ACUTE
  1528. #define ISO_8859_1_DB 0 // 219 Û U CIRCUMFLEX
  1529. #define ISO_8859_1_DC 0 // 220 Ü U DIAERESIS
  1530. #define ISO_8859_1_DD 0 // 221 Ý Y ACUTE
  1531. #define ISO_8859_1_DE 0 // 222 Þ THORN
  1532. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  1533. #define ISO_8859_1_E0 0 // 224 à a GRAVE
  1534. #define ISO_8859_1_E1 KEY_A + ALTGR_MASK // 225 á a ACUTE
  1535. #define ISO_8859_1_E2 0 // 226 â a CIRCUMFLEX
  1536. #define ISO_8859_1_E3 0 // 227 ã a TILDE
  1537. #define ISO_8859_1_E4 0 // 228 ä a DIAERESIS
  1538. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  1539. #define ISO_8859_1_E6 0 // 230 æ ae
  1540. #define ISO_8859_1_E7 0 // 231 ç c CEDILLA
  1541. #define ISO_8859_1_E8 0 // 232 è e GRAVE
  1542. #define ISO_8859_1_E9 KEY_E + ALTGR_MASK // 233 é e ACUTE
  1543. #define ISO_8859_1_EA 0 // 234 ê e CIRCUMFLEX
  1544. #define ISO_8859_1_EB 0 // 235 ë e DIAERESIS
  1545. #define ISO_8859_1_EC 0 // 236 ì i GRAVE
  1546. #define ISO_8859_1_ED KEY_I + ALTGR_MASK // 237 í i ACUTE
  1547. #define ISO_8859_1_EE 0 // 238 î i CIRCUMFLEX
  1548. #define ISO_8859_1_EF 0 // 239 ï i DIAERESIS
  1549. #define ISO_8859_1_F0 0 // 240 ð ETH
  1550. #define ISO_8859_1_F1 0 // 241 ñ n TILDE
  1551. #define ISO_8859_1_F2 0 // 242 ò o GRAVE
  1552. #define ISO_8859_1_F3 KEY_O + ALTGR_MASK // 243 ó o ACUTE
  1553. #define ISO_8859_1_F4 0 // 244 ô o CIRCUMFLEX
  1554. #define ISO_8859_1_F5 0 // 245 õ o TILDE
  1555. #define ISO_8859_1_F6 0 // 246 ö o DIAERESIS
  1556. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  1557. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  1558. #define ISO_8859_1_F9 0 // 249 ù u GRAVE
  1559. #define ISO_8859_1_FA KEY_U + ALTGR_MASK // 250 ú u ACUTE
  1560. #define ISO_8859_1_FB 0 // 251 û u CIRCUMFLEX
  1561. #define ISO_8859_1_FC 0 // 252 ü u DIAERESIS
  1562. #define ISO_8859_1_FD 0 // 253 ý y ACUTE
  1563. #define ISO_8859_1_FE 0 // 254 þ THORN
  1564. #define ISO_8859_1_FF 0 // 255 ÿ y DIAERESIS
  1565. #define UNICODE_20AC KEY_4 + ALTGR_MASK // € Euro Sign
  1566. // not yet implemented
  1567. #define UNICODE_EXTRA00 0x20AC
  1568. #define KEYCODE_EXTRA00 KEY_4 + ALTGR_MASK // 20AC € Euro Sign
  1569. #endif // LAYOUT_UNITED_KINGDOM
  1570. #ifdef LAYOUT_FINNISH
  1571. #define SHIFT_MASK 0x0040
  1572. #define ALTGR_MASK 0x0080
  1573. #define DEADKEYS_MASK 0x0700
  1574. #define CIRCUMFLEX_BITS 0x0100
  1575. #define ACUTE_ACCENT_BITS 0x0200
  1576. #define GRAVE_ACCENT_BITS 0x0300
  1577. #define TILDE_BITS 0x0400
  1578. #define DIAERESIS_BITS 0x0500
  1579. #define KEYCODE_TYPE uint16_t
  1580. #define DEADKEY_CIRCUMFLEX KEY_RIGHT_BRACE + SHIFT_MASK
  1581. #define DEADKEY_ACUTE_ACCENT KEY_EQUAL
  1582. #define DEADKEY_GRAVE_ACCENT KEY_EQUAL + SHIFT_MASK
  1583. #define DEADKEY_TILDE KEY_RIGHT_BRACE + ALTGR_MASK
  1584. #define DEADKEY_DIAERESIS KEY_RIGHT_BRACE
  1585. #define KEY_NON_US_100 63
  1586. #define ASCII_20 KEY_SPACE // 32
  1587. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  1588. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  1589. #define ASCII_23 KEY_3 + SHIFT_MASK // 35 #
  1590. #define ASCII_24 KEY_4 + ALTGR_MASK // 36 $
  1591. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  1592. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  1593. #define ASCII_27 KEY_BACKSLASH // 39 '
  1594. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  1595. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  1596. #define ASCII_2A KEY_BACKSLASH + SHIFT_MASK // 42 *
  1597. #define ASCII_2B KEY_MINUS // 43 +
  1598. #define ASCII_2C KEY_COMMA // 44 ,
  1599. #define ASCII_2D KEY_SLASH // 45 -
  1600. #define ASCII_2E KEY_PERIOD // 46 .
  1601. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  1602. #define ASCII_30 KEY_0 // 48 0
  1603. #define ASCII_31 KEY_1 // 49 1
  1604. #define ASCII_32 KEY_2 // 50 2
  1605. #define ASCII_33 KEY_3 // 51 3
  1606. #define ASCII_34 KEY_4 // 52 4
  1607. #define ASCII_35 KEY_5 // 53 5
  1608. #define ASCII_36 KEY_6 // 54 6
  1609. #define ASCII_37 KEY_7 // 55 7
  1610. #define ASCII_38 KEY_8 // 55 8
  1611. #define ASCII_39 KEY_9 // 57 9
  1612. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  1613. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  1614. #define ASCII_3C KEY_NON_US_100 // 60 <
  1615. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  1616. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  1617. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  1618. #define ASCII_40 KEY_2 + ALTGR_MASK // 64 @
  1619. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  1620. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  1621. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  1622. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  1623. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  1624. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  1625. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  1626. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  1627. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  1628. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  1629. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  1630. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  1631. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  1632. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  1633. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  1634. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  1635. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  1636. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  1637. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  1638. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  1639. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  1640. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  1641. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  1642. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  1643. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  1644. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  1645. #define ASCII_5B KEY_8 + ALTGR_MASK // 91 [
  1646. #define ASCII_5C KEY_MINUS + ALTGR_MASK // 92
  1647. #define ASCII_5D KEY_9 + ALTGR_MASK // 93 ]
  1648. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  1649. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  1650. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  1651. #define ASCII_61 KEY_A // 97 a
  1652. #define ASCII_62 KEY_B // 98 b
  1653. #define ASCII_63 KEY_C // 99 c
  1654. #define ASCII_64 KEY_D // 100 d
  1655. #define ASCII_65 KEY_E // 101 e
  1656. #define ASCII_66 KEY_F // 102 f
  1657. #define ASCII_67 KEY_G // 103 g
  1658. #define ASCII_68 KEY_H // 104 h
  1659. #define ASCII_69 KEY_I // 105 i
  1660. #define ASCII_6A KEY_J // 106 j
  1661. #define ASCII_6B KEY_K // 107 k
  1662. #define ASCII_6C KEY_L // 108 l
  1663. #define ASCII_6D KEY_M // 109 m
  1664. #define ASCII_6E KEY_N // 110 n
  1665. #define ASCII_6F KEY_O // 111 o
  1666. #define ASCII_70 KEY_P // 112 p
  1667. #define ASCII_71 KEY_Q // 113 q
  1668. #define ASCII_72 KEY_R // 114 r
  1669. #define ASCII_73 KEY_S // 115 s
  1670. #define ASCII_74 KEY_T // 116 t
  1671. #define ASCII_75 KEY_U // 117 u
  1672. #define ASCII_76 KEY_V // 118 v
  1673. #define ASCII_77 KEY_W // 119 w
  1674. #define ASCII_78 KEY_X // 120 x
  1675. #define ASCII_79 KEY_Y // 121 y
  1676. #define ASCII_7A KEY_Z // 122 z
  1677. #define ASCII_7B KEY_7 + ALTGR_MASK // 123 {
  1678. #define ASCII_7C KEY_NON_US_100 + ALTGR_MASK // 124 |
  1679. #define ASCII_7D KEY_0 + ALTGR_MASK // 125 }
  1680. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  1681. #define ASCII_7F KEY_BACKSPACE // 127
  1682. #define ISO_8859_1_A0 KEY_SPACE + ALTGR_MASK // 160 Nonbreakng Space
  1683. #define ISO_8859_1_A1 KEY_1 + SHIFT_MASK + ALTGR_MASK // 161 ¡ Inverted Exclamation
  1684. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  1685. #define ISO_8859_1_A3 KEY_3 + ALTGR_MASK // 163 £ Pound Sign
  1686. #define ISO_8859_1_A4 KEY_4 + SHIFT_MASK // 164 ¤ Currency or Euro Sign
  1687. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  1688. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  1689. #define ISO_8859_1_A7 KEY_TILDE // 167 § SECTION SIGN
  1690. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  1691. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  1692. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  1693. #define ISO_8859_1_AB KEY_4 + ALTGR_MASK + SHIFT_MASK // 171 « LEFT DOUBLE ANGLE QUOTE
  1694. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  1695. #define ISO_8859_1_AD KEY_SLASH + ALTGR_MASK // 173 SOFT HYPHEN
  1696. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  1697. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  1698. #define ISO_8859_1_B0 KEY_0 + ALTGR_MASK + SHIFT_MASK // 176 ° DEGREE SIGN
  1699. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  1700. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  1701. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  1702. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  1703. #define ISO_8859_1_B5 KEY_M + ALTGR_MASK // 181 µ MICRO SIGN
  1704. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  1705. #define ISO_8859_1_B7 KEY_X + ALTGR_MASK + SHIFT_MASK // 183 · MIDDLE DOT
  1706. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  1707. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  1708. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  1709. #define ISO_8859_1_BB KEY_3 + ALTGR_MASK + SHIFT_MASK // 187 » RIGHT DOUBLE ANGLE QUOTE
  1710. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  1711. #define ISO_8859_1_BD KEY_TILDE + SHIFT_MASK // 189 ½ FRACTION ONE HALF
  1712. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  1713. #define ISO_8859_1_BF KEY_MINUS + ALTGR_MASK + SHIFT_MASK // 191 ¿ INVERTED QUESTION MARK
  1714. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  1715. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  1716. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  1717. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  1718. #define ISO_8859_1_C4 KEY_QUOTE + SHIFT_MASK // 196 Ä A DIAERESIS
  1719. #define ISO_8859_1_C5 KEY_LEFT_BRACE + SHIFT_MASK // 197 Å A RING ABOVE
  1720. #define ISO_8859_1_C6 KEY_QUOTE + ALTGR_MASK + SHIFT_MASK // 198 Æ AE
  1721. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  1722. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  1723. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  1724. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  1725. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  1726. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  1727. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  1728. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  1729. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  1730. #define ISO_8859_1_D0 KEY_D + ALTGR_MASK + SHIFT_MASK // 208 Ð ETH
  1731. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  1732. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  1733. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  1734. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  1735. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  1736. #define ISO_8859_1_D6 KEY_SEMICOLON + SHIFT_MASK // 214 Ö O DIAERESIS
  1737. #define ISO_8859_1_D7 KEY_X + ALTGR_MASK // 215 × MULTIPLICATION
  1738. #define ISO_8859_1_D8 KEY_SEMICOLON + ALTGR_MASK + SHIFT_MASK // 216 Ø O STROKE
  1739. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  1740. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  1741. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  1742. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  1743. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  1744. #define ISO_8859_1_DE KEY_T + ALTGR_MASK + SHIFT_MASK // 222 Þ THORN
  1745. #define ISO_8859_1_DF KEY_S + ALTGR_MASK // 223 ß SHARP S
  1746. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  1747. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  1748. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  1749. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  1750. #define ISO_8859_1_E4 KEY_QUOTE // 228 ä a DIAERESIS
  1751. #define ISO_8859_1_E5 KEY_LEFT_BRACE // 229 å a RING ABOVE
  1752. #define ISO_8859_1_E6 KEY_QUOTE + ALTGR_MASK // 230 æ ae
  1753. #define ISO_8859_1_E7 0 // 231 ç c CEDILLA
  1754. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  1755. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  1756. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  1757. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  1758. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  1759. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  1760. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  1761. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  1762. #define ISO_8859_1_F0 KEY_D + ALTGR_MASK // 240 ð ETH
  1763. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  1764. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  1765. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  1766. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  1767. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  1768. #define ISO_8859_1_F6 KEY_SEMICOLON // 246 ö o DIAERESIS
  1769. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  1770. #define ISO_8859_1_F8 KEY_SEMICOLON + ALTGR_MASK // 248 ø o STROKE
  1771. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  1772. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  1773. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  1774. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  1775. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  1776. #define ISO_8859_1_FE KEY_T + ALTGR_MASK // 254 þ THORN
  1777. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  1778. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  1779. // not yet implemented
  1780. #define UNICODE_EXTRA00 0x20AC
  1781. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  1782. // TODO: Finnish Multilingual layout can type many more glyphs
  1783. // but we currently don't have tables tables to store them...
  1784. #endif // LAYOUT_FINNISH
  1785. #ifdef LAYOUT_FRENCH
  1786. #define SHIFT_MASK 0x0040
  1787. #define ALTGR_MASK 0x0080
  1788. #define DEADKEYS_MASK 0x0700
  1789. #define CIRCUMFLEX_BITS 0x0100
  1790. #define GRAVE_ACCENT_BITS 0x0200
  1791. #define DIAERESIS_BITS 0x0300
  1792. #define TILDE_BITS 0x0400
  1793. #define KEYCODE_TYPE uint16_t
  1794. #define DEADKEY_CIRCUMFLEX KEY_LEFT_BRACE
  1795. #define DEADKEY_GRAVE_ACCENT KEY_7 + ALTGR_MASK
  1796. #define DEADKEY_DIAERESIS KEY_LEFT_BRACE + SHIFT_MASK
  1797. #define DEADKEY_TILDE KEY_2 + ALTGR_MASK
  1798. #define KEY_NON_US_100 63
  1799. #define ASCII_20 KEY_SPACE // 32
  1800. #define ASCII_21 KEY_SLASH // 33 !
  1801. #define ASCII_22 KEY_3 // 34 "
  1802. #define ASCII_23 KEY_3 + ALTGR_MASK // 35 #
  1803. #define ASCII_24 KEY_RIGHT_BRACE // 36 $
  1804. #define ASCII_25 KEY_QUOTE + SHIFT_MASK // 37 %
  1805. #define ASCII_26 KEY_1 // 38 &
  1806. #define ASCII_27 KEY_4 // 39 '
  1807. #define ASCII_28 KEY_5 // 40 (
  1808. #define ASCII_29 KEY_MINUS // 41 )
  1809. #define ASCII_2A KEY_BACKSLASH // 42 *
  1810. #define ASCII_2B KEY_EQUAL + SHIFT_MASK // 43 +
  1811. #define ASCII_2C KEY_M // 44 ,
  1812. #define ASCII_2D KEY_6 // 45 -
  1813. #define ASCII_2E KEY_COMMA + SHIFT_MASK // 46 .
  1814. #define ASCII_2F KEY_PERIOD + SHIFT_MASK // 47 /
  1815. #define ASCII_30 KEY_0 + SHIFT_MASK // 48 0
  1816. #define ASCII_31 KEY_1 + SHIFT_MASK // 49 1
  1817. #define ASCII_32 KEY_2 + SHIFT_MASK // 50 2
  1818. #define ASCII_33 KEY_3 + SHIFT_MASK // 51 3
  1819. #define ASCII_34 KEY_4 + SHIFT_MASK // 52 4
  1820. #define ASCII_35 KEY_5 + SHIFT_MASK // 53 5
  1821. #define ASCII_36 KEY_6 + SHIFT_MASK // 54 6
  1822. #define ASCII_37 KEY_7 + SHIFT_MASK // 55 7
  1823. #define ASCII_38 KEY_8 + SHIFT_MASK // 55 8
  1824. #define ASCII_39 KEY_9 + SHIFT_MASK // 57 9
  1825. #define ASCII_3A KEY_PERIOD // 58 :
  1826. #define ASCII_3B KEY_COMMA // 59 ;
  1827. #define ASCII_3C KEY_NON_US_100 // 60 <
  1828. #define ASCII_3D KEY_EQUAL // 61 =
  1829. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  1830. #define ASCII_3F KEY_M + SHIFT_MASK // 63 ?
  1831. #define ASCII_40 KEY_0 + ALTGR_MASK // 64 @
  1832. #define ASCII_41 KEY_Q + SHIFT_MASK // 65 A
  1833. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  1834. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  1835. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  1836. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  1837. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  1838. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  1839. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  1840. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  1841. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  1842. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  1843. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  1844. #define ASCII_4D KEY_SEMICOLON + SHIFT_MASK // 77 M
  1845. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  1846. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  1847. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  1848. #define ASCII_51 KEY_A + SHIFT_MASK // 81 Q
  1849. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  1850. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  1851. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  1852. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  1853. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  1854. #define ASCII_57 KEY_Z + SHIFT_MASK // 87 W
  1855. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  1856. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  1857. #define ASCII_5A KEY_W + SHIFT_MASK // 90 Z
  1858. #define ASCII_5B KEY_5 + ALTGR_MASK // 91 [
  1859. #define ASCII_5C KEY_8 + ALTGR_MASK // 92
  1860. #define ASCII_5D KEY_MINUS + ALTGR_MASK // 93 ]
  1861. #define ASCII_5E KEY_9 + ALTGR_MASK // 94 ^
  1862. #define ASCII_5F KEY_8 // 95 _
  1863. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  1864. #define ASCII_61 KEY_Q // 97 a
  1865. #define ASCII_62 KEY_B // 98 b
  1866. #define ASCII_63 KEY_C // 99 c
  1867. #define ASCII_64 KEY_D // 100 d
  1868. #define ASCII_65 KEY_E // 101 e
  1869. #define ASCII_66 KEY_F // 102 f
  1870. #define ASCII_67 KEY_G // 103 g
  1871. #define ASCII_68 KEY_H // 104 h
  1872. #define ASCII_69 KEY_I // 105 i
  1873. #define ASCII_6A KEY_J // 106 j
  1874. #define ASCII_6B KEY_K // 107 k
  1875. #define ASCII_6C KEY_L // 108 l
  1876. #define ASCII_6D KEY_SEMICOLON // 109 m
  1877. #define ASCII_6E KEY_N // 110 n
  1878. #define ASCII_6F KEY_O // 111 o
  1879. #define ASCII_70 KEY_P // 112 p
  1880. #define ASCII_71 KEY_A // 113 q
  1881. #define ASCII_72 KEY_R // 114 r
  1882. #define ASCII_73 KEY_S // 115 s
  1883. #define ASCII_74 KEY_T // 116 t
  1884. #define ASCII_75 KEY_U // 117 u
  1885. #define ASCII_76 KEY_V // 118 v
  1886. #define ASCII_77 KEY_Z // 119 w
  1887. #define ASCII_78 KEY_X // 120 x
  1888. #define ASCII_79 KEY_Y // 121 y
  1889. #define ASCII_7A KEY_W // 122 z
  1890. #define ASCII_7B KEY_4 + ALTGR_MASK // 123 {
  1891. #define ASCII_7C KEY_6 + ALTGR_MASK // 124 |
  1892. #define ASCII_7D KEY_EQUAL + ALTGR_MASK // 125 }
  1893. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  1894. #define ASCII_7F KEY_BACKSPACE // 127
  1895. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  1896. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  1897. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  1898. #define ISO_8859_1_A3 KEY_RIGHT_BRACE + SHIFT_MASK // 163 £ Pound Sign
  1899. #define ISO_8859_1_A4 KEY_RIGHT_BRACE + ALTGR_MASK // 164 ¤ Currency or Euro Sign
  1900. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  1901. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  1902. #define ISO_8859_1_A7 KEY_SLASH + SHIFT_MASK // 167 § SECTION SIGN
  1903. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  1904. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  1905. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  1906. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  1907. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  1908. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  1909. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  1910. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  1911. #define ISO_8859_1_B0 KEY_MINUS + SHIFT_MASK // 176 ° DEGREE SIGN
  1912. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  1913. #define ISO_8859_1_B2 KEY_TILDE // 178 ² SUPERSCRIPT TWO
  1914. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  1915. #define ISO_8859_1_B4 0 // 180 ´ ACUTE ACCENT
  1916. #define ISO_8859_1_B5 KEY_BACKSLASH + SHIFT_MASK // 181 µ MICRO SIGN
  1917. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  1918. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  1919. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  1920. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  1921. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  1922. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  1923. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  1924. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  1925. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  1926. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  1927. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_Q + SHIFT_MASK // 192 À A GRAVE
  1928. #define ISO_8859_1_C1 0 // 193 Á A ACUTE
  1929. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_Q + SHIFT_MASK // 194 Â A CIRCUMFLEX
  1930. #define ISO_8859_1_C3 TILDE_BITS + KEY_Q + SHIFT_MASK // 195 Ã A TILDE
  1931. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_Q + SHIFT_MASK // 196 Ä A DIAERESIS
  1932. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  1933. #define ISO_8859_1_C6 0 // 198 Æ AE
  1934. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  1935. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  1936. #define ISO_8859_1_C9 0 // 201 É E ACUTE
  1937. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  1938. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  1939. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  1940. #define ISO_8859_1_CD 0 // 205 Í I ACUTE
  1941. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  1942. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  1943. #define ISO_8859_1_D0 0 // 208 Ð ETH
  1944. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  1945. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  1946. #define ISO_8859_1_D3 0 // 211 Ó O ACUTE
  1947. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  1948. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  1949. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  1950. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  1951. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  1952. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  1953. #define ISO_8859_1_DA 0 // 218 Ú U ACUTE
  1954. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  1955. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U // 220 Ü U DIAERESIS
  1956. #define ISO_8859_1_DD 0 // 221 Ý Y ACUTE
  1957. #define ISO_8859_1_DE 0 // 222 Þ THORN
  1958. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  1959. #define ISO_8859_1_E0 KEY_0 // 224 à a GRAVE
  1960. #define ISO_8859_1_E1 0 // 225 á a ACUTE
  1961. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_Q // 226 â a CIRCUMFLEX
  1962. #define ISO_8859_1_E3 TILDE_BITS + KEY_Q // 227 ã a TILDE
  1963. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_Q // 228 ä a DIAERESIS
  1964. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  1965. #define ISO_8859_1_E6 0 // 230 æ ae
  1966. #define ISO_8859_1_E7 KEY_9 // 231 ç c CEDILLA
  1967. #define ISO_8859_1_E8 KEY_7 // 232 è e GRAVE
  1968. #define ISO_8859_1_E9 KEY_2 // 233 é e ACUTE
  1969. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  1970. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  1971. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  1972. #define ISO_8859_1_ED 0 // 237 í i ACUTE
  1973. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  1974. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  1975. #define ISO_8859_1_F0 0 // 240 ð ETH
  1976. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  1977. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  1978. #define ISO_8859_1_F3 0 // 243 ó o ACUTE
  1979. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  1980. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  1981. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  1982. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  1983. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  1984. #define ISO_8859_1_F9 KEY_SEMICOLON // 249 ù u GRAVE
  1985. #define ISO_8859_1_FA 0 // 250 ú u ACUTE
  1986. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  1987. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  1988. #define ISO_8859_1_FD 0 // 253 ý y ACUTE
  1989. #define ISO_8859_1_FE 0 // 254 þ THORN
  1990. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  1991. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  1992. // not yet implemented
  1993. #define UNICODE_EXTRA00 0x20AC
  1994. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  1995. #endif // LAYOUT_FRENCH
  1996. #ifdef LAYOUT_DANISH
  1997. #define SHIFT_MASK 0x0040
  1998. #define ALTGR_MASK 0x0080
  1999. #define DEADKEYS_MASK 0x0700
  2000. #define CIRCUMFLEX_BITS 0x0100
  2001. #define ACUTE_ACCENT_BITS 0x0200
  2002. #define GRAVE_ACCENT_BITS 0x0300
  2003. #define TILDE_BITS 0x0400
  2004. #define DIAERESIS_BITS 0x0500
  2005. #define KEYCODE_TYPE uint16_t
  2006. #define DEADKEY_CIRCUMFLEX KEY_RIGHT_BRACE + SHIFT_MASK
  2007. #define DEADKEY_ACUTE_ACCENT KEY_EQUAL
  2008. #define DEADKEY_GRAVE_ACCENT KEY_EQUAL + SHIFT_MASK
  2009. #define DEADKEY_TILDE KEY_RIGHT_BRACE + ALTGR_MASK
  2010. #define DEADKEY_DIAERESIS KEY_RIGHT_BRACE
  2011. #define KEY_NON_US_100 63
  2012. #define ASCII_20 KEY_SPACE // 32
  2013. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  2014. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  2015. #define ASCII_23 KEY_3 + SHIFT_MASK // 35 #
  2016. #define ASCII_24 KEY_4 + ALTGR_MASK // 36 $
  2017. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  2018. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  2019. #define ASCII_27 KEY_BACKSLASH // 39 '
  2020. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  2021. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  2022. #define ASCII_2A KEY_BACKSLASH + SHIFT_MASK // 42 *
  2023. #define ASCII_2B KEY_MINUS // 43 +
  2024. #define ASCII_2C KEY_COMMA // 44 ,
  2025. #define ASCII_2D KEY_SLASH // 45 -
  2026. #define ASCII_2E KEY_PERIOD // 46 .
  2027. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  2028. #define ASCII_30 KEY_0 // 48 0
  2029. #define ASCII_31 KEY_1 // 49 1
  2030. #define ASCII_32 KEY_2 // 50 2
  2031. #define ASCII_33 KEY_3 // 51 3
  2032. #define ASCII_34 KEY_4 // 52 4
  2033. #define ASCII_35 KEY_5 // 53 5
  2034. #define ASCII_36 KEY_6 // 54 6
  2035. #define ASCII_37 KEY_7 // 55 7
  2036. #define ASCII_38 KEY_8 // 55 8
  2037. #define ASCII_39 KEY_9 // 57 9
  2038. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  2039. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  2040. #define ASCII_3C KEY_NON_US_100 // 60 <
  2041. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  2042. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  2043. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  2044. #define ASCII_40 KEY_2 + ALTGR_MASK // 64 @
  2045. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  2046. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  2047. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  2048. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  2049. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  2050. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  2051. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  2052. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  2053. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  2054. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  2055. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  2056. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  2057. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  2058. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  2059. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  2060. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  2061. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  2062. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  2063. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  2064. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  2065. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  2066. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  2067. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  2068. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  2069. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  2070. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  2071. #define ASCII_5B KEY_8 + ALTGR_MASK // 91 [
  2072. #define ASCII_5C KEY_NON_US_100 + ALTGR_MASK // 92
  2073. #define ASCII_5D KEY_9 + ALTGR_MASK // 93 ]
  2074. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  2075. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  2076. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  2077. #define ASCII_61 KEY_A // 97 a
  2078. #define ASCII_62 KEY_B // 98 b
  2079. #define ASCII_63 KEY_C // 99 c
  2080. #define ASCII_64 KEY_D // 100 d
  2081. #define ASCII_65 KEY_E // 101 e
  2082. #define ASCII_66 KEY_F // 102 f
  2083. #define ASCII_67 KEY_G // 103 g
  2084. #define ASCII_68 KEY_H // 104 h
  2085. #define ASCII_69 KEY_I // 105 i
  2086. #define ASCII_6A KEY_J // 106 j
  2087. #define ASCII_6B KEY_K // 107 k
  2088. #define ASCII_6C KEY_L // 108 l
  2089. #define ASCII_6D KEY_M // 109 m
  2090. #define ASCII_6E KEY_N // 110 n
  2091. #define ASCII_6F KEY_O // 111 o
  2092. #define ASCII_70 KEY_P // 112 p
  2093. #define ASCII_71 KEY_Q // 113 q
  2094. #define ASCII_72 KEY_R // 114 r
  2095. #define ASCII_73 KEY_S // 115 s
  2096. #define ASCII_74 KEY_T // 116 t
  2097. #define ASCII_75 KEY_U // 117 u
  2098. #define ASCII_76 KEY_V // 118 v
  2099. #define ASCII_77 KEY_W // 119 w
  2100. #define ASCII_78 KEY_X // 120 x
  2101. #define ASCII_79 KEY_Y // 121 y
  2102. #define ASCII_7A KEY_Z // 122 z
  2103. #define ASCII_7B KEY_7 + ALTGR_MASK // 123 {
  2104. #define ASCII_7C KEY_EQUAL + ALTGR_MASK // 124 |
  2105. #define ASCII_7D KEY_0 + ALTGR_MASK // 125 }
  2106. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  2107. #define ASCII_7F KEY_BACKSPACE // 127
  2108. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  2109. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  2110. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  2111. #define ISO_8859_1_A3 KEY_3 + ALTGR_MASK // 163 £ Pound Sign
  2112. #define ISO_8859_1_A4 KEY_4 + SHIFT_MASK // 164 ¤ Currency Sign
  2113. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  2114. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  2115. #define ISO_8859_1_A7 KEY_TILDE + SHIFT_MASK // 167 § SECTION SIGN
  2116. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  2117. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  2118. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  2119. #define ISO_8859_1_AB KEY_4 // 171 « LEFT DOUBLE ANGLE QUOTE
  2120. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  2121. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  2122. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  2123. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  2124. #define ISO_8859_1_B0 0 // 176 ° DEGREE SIGN
  2125. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  2126. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  2127. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  2128. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  2129. #define ISO_8859_1_B5 KEY_M + ALTGR_MASK // 181 µ MICRO SIGN
  2130. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  2131. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  2132. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  2133. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  2134. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  2135. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  2136. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  2137. #define ISO_8859_1_BD KEY_TILDE // 189 ½ FRACTION ONE HALF
  2138. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  2139. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  2140. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  2141. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  2142. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  2143. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  2144. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  2145. #define ISO_8859_1_C5 KEY_LEFT_BRACE + SHIFT_MASK // 197 Å A RING ABOVE
  2146. #define ISO_8859_1_C6 KEY_SEMICOLON + SHIFT_MASK // 198 Æ AE
  2147. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  2148. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  2149. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  2150. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  2151. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  2152. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  2153. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  2154. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  2155. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  2156. #define ISO_8859_1_D0 KEY_D + ALTGR_MASK + SHIFT_MASK // 208 Ð ETH
  2157. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  2158. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  2159. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  2160. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  2161. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  2162. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  2163. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  2164. #define ISO_8859_1_D8 KEY_QUOTE + SHIFT_MASK // 216 Ø O STROKE
  2165. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  2166. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  2167. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  2168. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  2169. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  2170. #define ISO_8859_1_DE KEY_T + ALTGR_MASK + SHIFT_MASK // 222 Þ THORN
  2171. #define ISO_8859_1_DF KEY_S + ALTGR_MASK // 223 ß SHARP S
  2172. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  2173. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  2174. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  2175. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  2176. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  2177. #define ISO_8859_1_E5 KEY_LEFT_BRACE // 229 å a RING ABOVE
  2178. #define ISO_8859_1_E6 KEY_SEMICOLON // 230 æ ae
  2179. #define ISO_8859_1_E7 0 // 231 ç c CEDILLA
  2180. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  2181. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  2182. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  2183. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  2184. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  2185. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  2186. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  2187. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  2188. #define ISO_8859_1_F0 KEY_D + ALTGR_MASK // 240 ð ETH
  2189. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  2190. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  2191. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  2192. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  2193. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  2194. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  2195. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  2196. #define ISO_8859_1_F8 KEY_QUOTE // 248 ø o STROKE
  2197. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  2198. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  2199. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  2200. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  2201. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  2202. #define ISO_8859_1_FE KEY_T + ALTGR_MASK // 254 þ THORN
  2203. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  2204. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  2205. // not yet implemented
  2206. #define UNICODE_EXTRA00 0x20AC
  2207. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  2208. #endif // LAYOUT_DANISH
  2209. #ifdef LAYOUT_NORWEGIAN
  2210. #define SHIFT_MASK 0x0040
  2211. #define ALTGR_MASK 0x0080
  2212. #define DEADKEYS_MASK 0x0700
  2213. #define CIRCUMFLEX_BITS 0x0100
  2214. #define ACUTE_ACCENT_BITS 0x0200
  2215. #define GRAVE_ACCENT_BITS 0x0300
  2216. #define TILDE_BITS 0x0400
  2217. #define DIAERESIS_BITS 0x0500
  2218. #define KEYCODE_TYPE uint16_t
  2219. #define DEADKEY_CIRCUMFLEX KEY_RIGHT_BRACE + SHIFT_MASK
  2220. #define DEADKEY_ACUTE_ACCENT KEY_EQUAL + ALTGR_MASK
  2221. #define DEADKEY_GRAVE_ACCENT KEY_EQUAL + SHIFT_MASK
  2222. #define DEADKEY_TILDE KEY_RIGHT_BRACE + ALTGR_MASK
  2223. #define DEADKEY_DIAERESIS KEY_RIGHT_BRACE
  2224. #define KEY_NON_US_100 63
  2225. #define ASCII_20 KEY_SPACE // 32
  2226. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  2227. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  2228. #define ASCII_23 KEY_3 + SHIFT_MASK // 35 #
  2229. #define ASCII_24 KEY_4 + ALTGR_MASK // 36 $
  2230. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  2231. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  2232. #define ASCII_27 KEY_BACKSLASH // 39 '
  2233. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  2234. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  2235. #define ASCII_2A KEY_BACKSLASH + SHIFT_MASK // 42 *
  2236. #define ASCII_2B KEY_MINUS // 43 +
  2237. #define ASCII_2C KEY_COMMA // 44 ,
  2238. #define ASCII_2D KEY_SLASH // 45 -
  2239. #define ASCII_2E KEY_PERIOD // 46 .
  2240. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  2241. #define ASCII_30 KEY_0 // 48 0
  2242. #define ASCII_31 KEY_1 // 49 1
  2243. #define ASCII_32 KEY_2 // 50 2
  2244. #define ASCII_33 KEY_3 // 51 3
  2245. #define ASCII_34 KEY_4 // 52 4
  2246. #define ASCII_35 KEY_5 // 53 5
  2247. #define ASCII_36 KEY_6 // 54 6
  2248. #define ASCII_37 KEY_7 // 55 7
  2249. #define ASCII_38 KEY_8 // 55 8
  2250. #define ASCII_39 KEY_9 // 57 9
  2251. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  2252. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  2253. #define ASCII_3C KEY_NON_US_100 // 60 <
  2254. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  2255. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  2256. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  2257. #define ASCII_40 KEY_2 + ALTGR_MASK // 64 @
  2258. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  2259. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  2260. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  2261. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  2262. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  2263. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  2264. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  2265. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  2266. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  2267. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  2268. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  2269. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  2270. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  2271. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  2272. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  2273. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  2274. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  2275. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  2276. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  2277. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  2278. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  2279. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  2280. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  2281. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  2282. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  2283. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  2284. #define ASCII_5B KEY_8 + ALTGR_MASK // 91 [
  2285. #define ASCII_5C KEY_EQUAL // 92
  2286. #define ASCII_5D KEY_9 + ALTGR_MASK // 93 ]
  2287. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  2288. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  2289. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  2290. #define ASCII_61 KEY_A // 97 a
  2291. #define ASCII_62 KEY_B // 98 b
  2292. #define ASCII_63 KEY_C // 99 c
  2293. #define ASCII_64 KEY_D // 100 d
  2294. #define ASCII_65 KEY_E // 101 e
  2295. #define ASCII_66 KEY_F // 102 f
  2296. #define ASCII_67 KEY_G // 103 g
  2297. #define ASCII_68 KEY_H // 104 h
  2298. #define ASCII_69 KEY_I // 105 i
  2299. #define ASCII_6A KEY_J // 106 j
  2300. #define ASCII_6B KEY_K // 107 k
  2301. #define ASCII_6C KEY_L // 108 l
  2302. #define ASCII_6D KEY_M // 109 m
  2303. #define ASCII_6E KEY_N // 110 n
  2304. #define ASCII_6F KEY_O // 111 o
  2305. #define ASCII_70 KEY_P // 112 p
  2306. #define ASCII_71 KEY_Q // 113 q
  2307. #define ASCII_72 KEY_R // 114 r
  2308. #define ASCII_73 KEY_S // 115 s
  2309. #define ASCII_74 KEY_T // 116 t
  2310. #define ASCII_75 KEY_U // 117 u
  2311. #define ASCII_76 KEY_V // 118 v
  2312. #define ASCII_77 KEY_W // 119 w
  2313. #define ASCII_78 KEY_X // 120 x
  2314. #define ASCII_79 KEY_Y // 121 y
  2315. #define ASCII_7A KEY_Z // 122 z
  2316. #define ASCII_7B KEY_7 + ALTGR_MASK // 123 {
  2317. #define ASCII_7C KEY_TILDE // 124 |
  2318. #define ASCII_7D KEY_0 + ALTGR_MASK // 125 }
  2319. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  2320. #define ASCII_7F KEY_BACKSPACE // 127
  2321. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  2322. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  2323. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  2324. #define ISO_8859_1_A3 KEY_3 + ALTGR_MASK // 163 £ Pound Sign
  2325. #define ISO_8859_1_A4 KEY_4 + SHIFT_MASK // 164 ¤ Currency Sign
  2326. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  2327. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  2328. #define ISO_8859_1_A7 KEY_TILDE + SHIFT_MASK // 167 § SECTION SIGN
  2329. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  2330. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  2331. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  2332. #define ISO_8859_1_AB KEY_4 // 171 « LEFT DOUBLE ANGLE QUOTE
  2333. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  2334. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  2335. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  2336. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  2337. #define ISO_8859_1_B0 0 // 176 ° DEGREE SIGN
  2338. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  2339. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  2340. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  2341. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  2342. #define ISO_8859_1_B5 KEY_M + ALTGR_MASK // 181 µ MICRO SIGN
  2343. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  2344. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  2345. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  2346. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  2347. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  2348. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  2349. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  2350. #define ISO_8859_1_BD KEY_TILDE // 189 ½ FRACTION ONE HALF
  2351. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  2352. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  2353. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  2354. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  2355. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  2356. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  2357. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  2358. #define ISO_8859_1_C5 KEY_LEFT_BRACE + SHIFT_MASK // 197 Å A RING ABOVE
  2359. #define ISO_8859_1_C6 KEY_QUOTE + SHIFT_MASK // 198 Æ AE
  2360. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  2361. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  2362. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  2363. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  2364. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  2365. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  2366. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  2367. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  2368. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  2369. #define ISO_8859_1_D0 KEY_D + ALTGR_MASK + SHIFT_MASK // 208 Ð ETH
  2370. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  2371. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  2372. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  2373. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  2374. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  2375. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  2376. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  2377. #define ISO_8859_1_D8 KEY_SEMICOLON + SHIFT_MASK // 216 Ø O STROKE
  2378. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  2379. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  2380. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  2381. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  2382. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  2383. #define ISO_8859_1_DE KEY_T + ALTGR_MASK + SHIFT_MASK // 222 Þ THORN
  2384. #define ISO_8859_1_DF KEY_S + ALTGR_MASK // 223 ß SHARP S
  2385. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  2386. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  2387. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  2388. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  2389. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  2390. #define ISO_8859_1_E5 KEY_LEFT_BRACE // 229 å a RING ABOVE
  2391. #define ISO_8859_1_E6 KEY_QUOTE // 230 æ ae
  2392. #define ISO_8859_1_E7 0 // 231 ç c CEDILLA
  2393. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  2394. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  2395. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  2396. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  2397. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  2398. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  2399. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  2400. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  2401. #define ISO_8859_1_F0 KEY_D + ALTGR_MASK // 240 ð ETH
  2402. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  2403. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  2404. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  2405. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  2406. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  2407. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  2408. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  2409. #define ISO_8859_1_F8 KEY_SEMICOLON // 248 ø o STROKE
  2410. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  2411. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  2412. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  2413. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  2414. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  2415. #define ISO_8859_1_FE KEY_T + ALTGR_MASK // 254 þ THORN
  2416. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  2417. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  2418. // not yet implemented
  2419. #define UNICODE_EXTRA00 0x20AC
  2420. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  2421. #endif // LAYOUT_NORWEGIAN
  2422. #ifdef LAYOUT_SWEDISH
  2423. #define SHIFT_MASK 0x0040
  2424. #define ALTGR_MASK 0x0080
  2425. #define DEADKEYS_MASK 0x0700
  2426. #define CIRCUMFLEX_BITS 0x0100
  2427. #define ACUTE_ACCENT_BITS 0x0200
  2428. #define GRAVE_ACCENT_BITS 0x0300
  2429. #define TILDE_BITS 0x0400
  2430. #define DIAERESIS_BITS 0x0500
  2431. #define KEYCODE_TYPE uint16_t
  2432. #define DEADKEY_CIRCUMFLEX KEY_RIGHT_BRACE + SHIFT_MASK
  2433. #define DEADKEY_ACUTE_ACCENT KEY_EQUAL
  2434. #define DEADKEY_GRAVE_ACCENT KEY_EQUAL + SHIFT_MASK
  2435. #define DEADKEY_TILDE KEY_RIGHT_BRACE + ALTGR_MASK
  2436. #define DEADKEY_DIAERESIS KEY_RIGHT_BRACE
  2437. #define KEY_NON_US_100 63
  2438. #define ASCII_20 KEY_SPACE // 32
  2439. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  2440. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  2441. #define ASCII_23 KEY_3 + SHIFT_MASK // 35 #
  2442. #define ASCII_24 KEY_4 + ALTGR_MASK // 36 $
  2443. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  2444. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  2445. #define ASCII_27 KEY_BACKSLASH // 39 '
  2446. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  2447. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  2448. #define ASCII_2A KEY_BACKSLASH + SHIFT_MASK // 42 *
  2449. #define ASCII_2B KEY_MINUS // 43 +
  2450. #define ASCII_2C KEY_COMMA // 44 ,
  2451. #define ASCII_2D KEY_SLASH // 45 -
  2452. #define ASCII_2E KEY_PERIOD // 46 .
  2453. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  2454. #define ASCII_30 KEY_0 // 48 0
  2455. #define ASCII_31 KEY_1 // 49 1
  2456. #define ASCII_32 KEY_2 // 50 2
  2457. #define ASCII_33 KEY_3 // 51 3
  2458. #define ASCII_34 KEY_4 // 52 4
  2459. #define ASCII_35 KEY_5 // 53 5
  2460. #define ASCII_36 KEY_6 // 54 6
  2461. #define ASCII_37 KEY_7 // 55 7
  2462. #define ASCII_38 KEY_8 // 55 8
  2463. #define ASCII_39 KEY_9 // 57 9
  2464. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  2465. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  2466. #define ASCII_3C KEY_NON_US_100 // 60 <
  2467. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  2468. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  2469. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  2470. #define ASCII_40 KEY_2 + ALTGR_MASK // 64 @
  2471. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  2472. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  2473. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  2474. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  2475. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  2476. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  2477. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  2478. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  2479. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  2480. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  2481. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  2482. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  2483. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  2484. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  2485. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  2486. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  2487. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  2488. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  2489. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  2490. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  2491. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  2492. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  2493. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  2494. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  2495. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  2496. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  2497. #define ASCII_5B KEY_8 + ALTGR_MASK // 91 [
  2498. #define ASCII_5C KEY_MINUS + ALTGR_MASK // 92
  2499. #define ASCII_5D KEY_9 + ALTGR_MASK // 93 ]
  2500. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  2501. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  2502. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  2503. #define ASCII_61 KEY_A // 97 a
  2504. #define ASCII_62 KEY_B // 98 b
  2505. #define ASCII_63 KEY_C // 99 c
  2506. #define ASCII_64 KEY_D // 100 d
  2507. #define ASCII_65 KEY_E // 101 e
  2508. #define ASCII_66 KEY_F // 102 f
  2509. #define ASCII_67 KEY_G // 103 g
  2510. #define ASCII_68 KEY_H // 104 h
  2511. #define ASCII_69 KEY_I // 105 i
  2512. #define ASCII_6A KEY_J // 106 j
  2513. #define ASCII_6B KEY_K // 107 k
  2514. #define ASCII_6C KEY_L // 108 l
  2515. #define ASCII_6D KEY_M // 109 m
  2516. #define ASCII_6E KEY_N // 110 n
  2517. #define ASCII_6F KEY_O // 111 o
  2518. #define ASCII_70 KEY_P // 112 p
  2519. #define ASCII_71 KEY_Q // 113 q
  2520. #define ASCII_72 KEY_R // 114 r
  2521. #define ASCII_73 KEY_S // 115 s
  2522. #define ASCII_74 KEY_T // 116 t
  2523. #define ASCII_75 KEY_U // 117 u
  2524. #define ASCII_76 KEY_V // 118 v
  2525. #define ASCII_77 KEY_W // 119 w
  2526. #define ASCII_78 KEY_X // 120 x
  2527. #define ASCII_79 KEY_Y // 121 y
  2528. #define ASCII_7A KEY_Z // 122 z
  2529. #define ASCII_7B KEY_7 + ALTGR_MASK // 123 {
  2530. #define ASCII_7C KEY_NON_US_100 + ALTGR_MASK // 124 |
  2531. #define ASCII_7D KEY_0 + ALTGR_MASK // 125 }
  2532. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  2533. #define ASCII_7F KEY_BACKSPACE // 127
  2534. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  2535. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  2536. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  2537. #define ISO_8859_1_A3 KEY_3 + ALTGR_MASK // 163 £ Pound Sign
  2538. #define ISO_8859_1_A4 KEY_4 + SHIFT_MASK // 164 ¤ Currency Sign
  2539. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  2540. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  2541. #define ISO_8859_1_A7 KEY_TILDE // 167 § SECTION SIGN
  2542. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  2543. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  2544. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  2545. #define ISO_8859_1_AB KEY_4 // 171 « LEFT DOUBLE ANGLE QUOTE
  2546. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  2547. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  2548. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  2549. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  2550. #define ISO_8859_1_B0 0 // 176 ° DEGREE SIGN
  2551. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  2552. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  2553. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  2554. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  2555. #define ISO_8859_1_B5 KEY_M + ALTGR_MASK // 181 µ MICRO SIGN
  2556. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  2557. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  2558. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  2559. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  2560. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  2561. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  2562. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  2563. #define ISO_8859_1_BD KEY_TILDE + SHIFT_MASK // 189 ½ FRACTION ONE HALF
  2564. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  2565. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  2566. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  2567. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  2568. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  2569. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  2570. #define ISO_8859_1_C4 KEY_QUOTE + SHIFT_MASK // 196 Ä A DIAERESIS
  2571. #define ISO_8859_1_C5 KEY_LEFT_BRACE + SHIFT_MASK // 197 Å A RING ABOVE
  2572. #define ISO_8859_1_C6 0 // 198 Æ AE
  2573. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  2574. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  2575. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  2576. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  2577. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  2578. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  2579. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  2580. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  2581. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  2582. #define ISO_8859_1_D0 KEY_D + ALTGR_MASK + SHIFT_MASK // 208 Ð ETH
  2583. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  2584. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  2585. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  2586. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  2587. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  2588. #define ISO_8859_1_D6 KEY_SEMICOLON + SHIFT_MASK // 214 Ö O DIAERESIS
  2589. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  2590. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  2591. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  2592. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  2593. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  2594. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  2595. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  2596. #define ISO_8859_1_DE KEY_T + ALTGR_MASK + SHIFT_MASK // 222 Þ THORN
  2597. #define ISO_8859_1_DF KEY_S + ALTGR_MASK // 223 ß SHARP S
  2598. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  2599. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  2600. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  2601. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  2602. #define ISO_8859_1_E4 KEY_QUOTE // 228 ä a DIAERESIS
  2603. #define ISO_8859_1_E5 KEY_LEFT_BRACE // 229 å a RING ABOVE
  2604. #define ISO_8859_1_E6 0 // 230 æ ae
  2605. #define ISO_8859_1_E7 0 // 231 ç c CEDILLA
  2606. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  2607. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  2608. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  2609. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  2610. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  2611. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  2612. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  2613. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  2614. #define ISO_8859_1_F0 KEY_D + ALTGR_MASK // 240 ð ETH
  2615. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  2616. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  2617. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  2618. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  2619. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  2620. #define ISO_8859_1_F6 KEY_SEMICOLON // 246 ö o DIAERESIS
  2621. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  2622. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  2623. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  2624. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  2625. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  2626. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  2627. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  2628. #define ISO_8859_1_FE KEY_T + ALTGR_MASK // 254 þ THORN
  2629. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  2630. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  2631. // not yet implemented
  2632. #define UNICODE_EXTRA00 0x20AC
  2633. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  2634. #endif // LAYOUT_SWEDISH
  2635. #ifdef LAYOUT_SPANISH
  2636. #define SHIFT_MASK 0x0040
  2637. #define ALTGR_MASK 0x0080
  2638. #define DEADKEYS_MASK 0x0700
  2639. #define CIRCUMFLEX_BITS 0x0100
  2640. #define ACUTE_ACCENT_BITS 0x0200
  2641. #define GRAVE_ACCENT_BITS 0x0300
  2642. #define TILDE_BITS 0x0400
  2643. #define DIAERESIS_BITS 0x0500
  2644. #define KEYCODE_TYPE uint16_t
  2645. #define DEADKEY_CIRCUMFLEX KEY_LEFT_BRACE + SHIFT_MASK
  2646. #define DEADKEY_ACUTE_ACCENT KEY_QUOTE
  2647. #define DEADKEY_GRAVE_ACCENT KEY_LEFT_BRACE
  2648. #define DEADKEY_TILDE KEY_4 + ALTGR_MASK
  2649. #define DEADKEY_DIAERESIS KEY_QUOTE + SHIFT_MASK
  2650. #define KEY_NON_US_100 63
  2651. #define ASCII_20 KEY_SPACE // 32
  2652. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  2653. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  2654. #define ASCII_23 KEY_3 + ALTGR_MASK // 35 #
  2655. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  2656. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  2657. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  2658. #define ASCII_27 KEY_MINUS // 39 '
  2659. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  2660. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  2661. #define ASCII_2A KEY_RIGHT_BRACE + SHIFT_MASK // 42 *
  2662. #define ASCII_2B KEY_RIGHT_BRACE // 43 +
  2663. #define ASCII_2C KEY_COMMA // 44 ,
  2664. #define ASCII_2D KEY_SLASH // 45 -
  2665. #define ASCII_2E KEY_PERIOD // 46 .
  2666. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  2667. #define ASCII_30 KEY_0 // 48 0
  2668. #define ASCII_31 KEY_1 // 49 1
  2669. #define ASCII_32 KEY_2 // 50 2
  2670. #define ASCII_33 KEY_3 // 51 3
  2671. #define ASCII_34 KEY_4 // 52 4
  2672. #define ASCII_35 KEY_5 // 53 5
  2673. #define ASCII_36 KEY_6 // 54 6
  2674. #define ASCII_37 KEY_7 // 55 7
  2675. #define ASCII_38 KEY_8 // 55 8
  2676. #define ASCII_39 KEY_9 // 57 9
  2677. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  2678. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  2679. #define ASCII_3C KEY_NON_US_100 // 60 <
  2680. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  2681. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  2682. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  2683. #define ASCII_40 KEY_2 + ALTGR_MASK // 64 @
  2684. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  2685. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  2686. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  2687. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  2688. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  2689. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  2690. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  2691. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  2692. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  2693. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  2694. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  2695. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  2696. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  2697. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  2698. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  2699. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  2700. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  2701. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  2702. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  2703. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  2704. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  2705. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  2706. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  2707. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  2708. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  2709. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  2710. #define ASCII_5B KEY_LEFT_BRACE + ALTGR_MASK // 91 [
  2711. #define ASCII_5C KEY_TILDE + ALTGR_MASK // 92
  2712. #define ASCII_5D KEY_RIGHT_BRACE + ALTGR_MASK // 93 ]
  2713. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  2714. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  2715. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  2716. #define ASCII_61 KEY_A // 97 a
  2717. #define ASCII_62 KEY_B // 98 b
  2718. #define ASCII_63 KEY_C // 99 c
  2719. #define ASCII_64 KEY_D // 100 d
  2720. #define ASCII_65 KEY_E // 101 e
  2721. #define ASCII_66 KEY_F // 102 f
  2722. #define ASCII_67 KEY_G // 103 g
  2723. #define ASCII_68 KEY_H // 104 h
  2724. #define ASCII_69 KEY_I // 105 i
  2725. #define ASCII_6A KEY_J // 106 j
  2726. #define ASCII_6B KEY_K // 107 k
  2727. #define ASCII_6C KEY_L // 108 l
  2728. #define ASCII_6D KEY_M // 109 m
  2729. #define ASCII_6E KEY_N // 110 n
  2730. #define ASCII_6F KEY_O // 111 o
  2731. #define ASCII_70 KEY_P // 112 p
  2732. #define ASCII_71 KEY_Q // 113 q
  2733. #define ASCII_72 KEY_R // 114 r
  2734. #define ASCII_73 KEY_S // 115 s
  2735. #define ASCII_74 KEY_T // 116 t
  2736. #define ASCII_75 KEY_U // 117 u
  2737. #define ASCII_76 KEY_V // 118 v
  2738. #define ASCII_77 KEY_W // 119 w
  2739. #define ASCII_78 KEY_X // 120 x
  2740. #define ASCII_79 KEY_Y // 121 y
  2741. #define ASCII_7A KEY_Z // 122 z
  2742. #define ASCII_7B KEY_QUOTE + ALTGR_MASK // 123 {
  2743. #define ASCII_7C KEY_1 + ALTGR_MASK // 124 |
  2744. #define ASCII_7D KEY_BACKSLASH + ALTGR_MASK // 125 }
  2745. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  2746. #define ASCII_7F KEY_BACKSPACE // 127
  2747. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  2748. #define ISO_8859_1_A1 KEY_EQUAL // 161 ¡ Inverted Exclamation
  2749. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  2750. #define ISO_8859_1_A3 0 // 163 £ Pound Sign
  2751. #define ISO_8859_1_A4 0 // 164 ¤ Currency Sign
  2752. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  2753. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  2754. #define ISO_8859_1_A7 0 // 167 § SECTION SIGN
  2755. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  2756. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  2757. #define ISO_8859_1_AA KEY_TILDE + SHIFT_MASK // 170 ª FEMININE ORDINAL
  2758. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  2759. #define ISO_8859_1_AC KEY_6 + ALTGR_MASK // 172 ¬ NOT SIGN
  2760. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  2761. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  2762. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  2763. #define ISO_8859_1_B0 0 // 176 ° DEGREE SIGN
  2764. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  2765. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  2766. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  2767. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  2768. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  2769. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  2770. #define ISO_8859_1_B7 KEY_3 + SHIFT_MASK // 183 · MIDDLE DOT
  2771. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  2772. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  2773. #define ISO_8859_1_BA KEY_TILDE // 186 º MASCULINE ORDINAL
  2774. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  2775. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  2776. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  2777. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  2778. #define ISO_8859_1_BF KEY_EQUAL // 191 ¿ INVERTED QUESTION MARK
  2779. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  2780. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  2781. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  2782. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  2783. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  2784. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  2785. #define ISO_8859_1_C6 0 // 198 Æ AE
  2786. #define ISO_8859_1_C7 KEY_BACKSLASH + SHIFT_MASK // 199 Ç C CEDILLA
  2787. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  2788. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  2789. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  2790. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  2791. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  2792. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  2793. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  2794. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  2795. #define ISO_8859_1_D0 0 // 208 Ð ETH
  2796. #define ISO_8859_1_D1 KEY_SEMICOLON + SHIFT_MASK // 209 Ñ N TILDE
  2797. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  2798. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  2799. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  2800. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  2801. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  2802. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  2803. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  2804. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  2805. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  2806. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  2807. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  2808. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  2809. #define ISO_8859_1_DE 0 // 222 Þ THORN
  2810. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  2811. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  2812. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  2813. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  2814. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  2815. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  2816. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  2817. #define ISO_8859_1_E6 0 // 230 æ ae
  2818. #define ISO_8859_1_E7 KEY_BACKSLASH // 231 ç c CEDILLA
  2819. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  2820. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  2821. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  2822. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  2823. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  2824. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  2825. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  2826. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  2827. #define ISO_8859_1_F0 0 // 240 ð ETH
  2828. #define ISO_8859_1_F1 KEY_SEMICOLON // 241 ñ n TILDE
  2829. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  2830. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  2831. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  2832. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  2833. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  2834. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  2835. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  2836. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  2837. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  2838. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  2839. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  2840. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  2841. #define ISO_8859_1_FE 0 // 254 þ THORN
  2842. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  2843. #define UNICODE_20AC KEY_5 + ALTGR_MASK // € Euro Sign
  2844. // not yet implemented
  2845. #define UNICODE_EXTRA00 0x20AC
  2846. #define KEYCODE_EXTRA00 KEY_5 + ALTGR_MASK // 20AC € Euro Sign
  2847. #endif // LAYOUT_SPANISH
  2848. #ifdef LAYOUT_PORTUGUESE
  2849. #define SHIFT_MASK 0x0040
  2850. #define ALTGR_MASK 0x0080
  2851. #define DEADKEYS_MASK 0x0700
  2852. #define CIRCUMFLEX_BITS 0x0100
  2853. #define ACUTE_ACCENT_BITS 0x0200
  2854. #define GRAVE_ACCENT_BITS 0x0300
  2855. #define TILDE_BITS 0x0400
  2856. #define DIAERESIS_BITS 0x0500
  2857. #define KEYCODE_TYPE uint16_t
  2858. #define DEADKEY_CIRCUMFLEX KEY_BACKSLASH
  2859. #define DEADKEY_ACUTE_ACCENT KEY_RIGHT_BRACE + SHIFT_MASK
  2860. #define DEADKEY_GRAVE_ACCENT KEY_RIGHT_BRACE + SHIFT_MASK
  2861. #define DEADKEY_TILDE KEY_BACKSLASH
  2862. #define DEADKEY_DIAERESIS KEY_LEFT_BRACE + SHIFT_MASK
  2863. #define KEY_NON_US_100 63
  2864. #define ASCII_20 KEY_SPACE // 32
  2865. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  2866. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  2867. #define ASCII_23 KEY_3 + ALTGR_MASK // 35 #
  2868. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  2869. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  2870. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  2871. #define ASCII_27 KEY_MINUS // 39 '
  2872. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  2873. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  2874. #define ASCII_2A KEY_LEFT_BRACE + SHIFT_MASK // 42 *
  2875. #define ASCII_2B KEY_LEFT_BRACE // 43 +
  2876. #define ASCII_2C KEY_COMMA // 44 ,
  2877. #define ASCII_2D KEY_SLASH // 45 -
  2878. #define ASCII_2E KEY_PERIOD // 46 .
  2879. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  2880. #define ASCII_30 KEY_0 // 48 0
  2881. #define ASCII_31 KEY_1 // 49 1
  2882. #define ASCII_32 KEY_2 // 50 2
  2883. #define ASCII_33 KEY_3 // 51 3
  2884. #define ASCII_34 KEY_4 // 52 4
  2885. #define ASCII_35 KEY_5 // 53 5
  2886. #define ASCII_36 KEY_6 // 54 6
  2887. #define ASCII_37 KEY_7 // 55 7
  2888. #define ASCII_38 KEY_8 // 55 8
  2889. #define ASCII_39 KEY_9 // 57 9
  2890. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  2891. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  2892. #define ASCII_3C KEY_NON_US_100 // 60 <
  2893. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  2894. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  2895. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  2896. #define ASCII_40 KEY_2 + ALTGR_MASK // 64 @
  2897. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  2898. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  2899. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  2900. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  2901. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  2902. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  2903. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  2904. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  2905. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  2906. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  2907. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  2908. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  2909. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  2910. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  2911. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  2912. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  2913. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  2914. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  2915. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  2916. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  2917. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  2918. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  2919. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  2920. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  2921. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  2922. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  2923. #define ASCII_5B KEY_8 + ALTGR_MASK // 91 [
  2924. #define ASCII_5C KEY_TILDE + ALTGR_MASK // 92
  2925. #define ASCII_5D KEY_9 + ALTGR_MASK // 93 ]
  2926. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  2927. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  2928. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  2929. #define ASCII_61 KEY_A // 97 a
  2930. #define ASCII_62 KEY_B // 98 b
  2931. #define ASCII_63 KEY_C // 99 c
  2932. #define ASCII_64 KEY_D // 100 d
  2933. #define ASCII_65 KEY_E // 101 e
  2934. #define ASCII_66 KEY_F // 102 f
  2935. #define ASCII_67 KEY_G // 103 g
  2936. #define ASCII_68 KEY_H // 104 h
  2937. #define ASCII_69 KEY_I // 105 i
  2938. #define ASCII_6A KEY_J // 106 j
  2939. #define ASCII_6B KEY_K // 107 k
  2940. #define ASCII_6C KEY_L // 108 l
  2941. #define ASCII_6D KEY_M // 109 m
  2942. #define ASCII_6E KEY_N // 110 n
  2943. #define ASCII_6F KEY_O // 111 o
  2944. #define ASCII_70 KEY_P // 112 p
  2945. #define ASCII_71 KEY_Q // 113 q
  2946. #define ASCII_72 KEY_R // 114 r
  2947. #define ASCII_73 KEY_S // 115 s
  2948. #define ASCII_74 KEY_T // 116 t
  2949. #define ASCII_75 KEY_U // 117 u
  2950. #define ASCII_76 KEY_V // 118 v
  2951. #define ASCII_77 KEY_W // 119 w
  2952. #define ASCII_78 KEY_X // 120 x
  2953. #define ASCII_79 KEY_Y // 121 y
  2954. #define ASCII_7A KEY_Z // 122 z
  2955. #define ASCII_7B KEY_7 + ALTGR_MASK // 123 {
  2956. #define ASCII_7C KEY_TILDE + SHIFT_MASK // 124 |
  2957. #define ASCII_7D KEY_0 + ALTGR_MASK // 125 }
  2958. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  2959. #define ASCII_7F KEY_BACKSPACE // 127
  2960. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  2961. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  2962. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  2963. #define ISO_8859_1_A3 KEY_3 + ALTGR_MASK // 163 £ Pound Sign
  2964. #define ISO_8859_1_A4 0 // 164 ¤ Currency Sign
  2965. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  2966. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  2967. #define ISO_8859_1_A7 KEY_4 + ALTGR_MASK // 167 § SECTION SIGN
  2968. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  2969. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  2970. #define ISO_8859_1_AA KEY_QUOTE + SHIFT_MASK // 170 ª FEMININE ORDINAL
  2971. #define ISO_8859_1_AB KEY_EQUAL // 171 « LEFT DOUBLE ANGLE QUOTE
  2972. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  2973. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  2974. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  2975. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  2976. #define ISO_8859_1_B0 0 // 176 ° DEGREE SIGN
  2977. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  2978. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  2979. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  2980. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  2981. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  2982. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  2983. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  2984. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  2985. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  2986. #define ISO_8859_1_BA KEY_QUOTE // 186 º MASCULINE ORDINAL
  2987. #define ISO_8859_1_BB KEY_EQUAL + SHIFT_MASK // 187 » RIGHT DOUBLE ANGLE QUOTE
  2988. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  2989. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  2990. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  2991. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  2992. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  2993. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  2994. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  2995. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  2996. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  2997. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  2998. #define ISO_8859_1_C6 0 // 198 Æ AE
  2999. #define ISO_8859_1_C7 KEY_SEMICOLON + SHIFT_MASK // 199 Ç C CEDILLA
  3000. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  3001. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  3002. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  3003. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  3004. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  3005. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  3006. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  3007. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  3008. #define ISO_8859_1_D0 0 // 208 Ð ETH
  3009. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  3010. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  3011. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  3012. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  3013. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  3014. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  3015. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  3016. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  3017. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  3018. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  3019. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  3020. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  3021. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  3022. #define ISO_8859_1_DE 0 // 222 Þ THORN
  3023. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  3024. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  3025. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  3026. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  3027. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  3028. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  3029. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  3030. #define ISO_8859_1_E6 0 // 230 æ ae
  3031. #define ISO_8859_1_E7 KEY_SEMICOLON // 231 ç c CEDILLA
  3032. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  3033. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  3034. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  3035. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  3036. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  3037. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  3038. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  3039. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  3040. #define ISO_8859_1_F0 0 // 240 ð ETH
  3041. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  3042. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  3043. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  3044. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  3045. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  3046. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  3047. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  3048. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  3049. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  3050. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  3051. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  3052. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  3053. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  3054. #define ISO_8859_1_FE 0 // 254 þ THORN
  3055. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  3056. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  3057. // not yet implemented
  3058. #define UNICODE_EXTRA00 0x20AC
  3059. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  3060. #endif // LAYOUT_PORTUGUESE
  3061. #ifdef LAYOUT_ITALIAN
  3062. #define SHIFT_MASK 0x40
  3063. #define ALTGR_MASK 0x80
  3064. #define KEYCODE_TYPE uint8_t
  3065. #define KEY_NON_US_100 63
  3066. #define ASCII_20 KEY_SPACE // 32
  3067. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  3068. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  3069. #define ASCII_23 KEY_QUOTE + ALTGR_MASK // 35 #
  3070. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  3071. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  3072. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  3073. #define ASCII_27 KEY_MINUS // 39 '
  3074. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  3075. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  3076. #define ASCII_2A KEY_RIGHT_BRACE + SHIFT_MASK // 42 *
  3077. #define ASCII_2B KEY_RIGHT_BRACE // 43 +
  3078. #define ASCII_2C KEY_COMMA // 44 ,
  3079. #define ASCII_2D KEY_SLASH // 45 -
  3080. #define ASCII_2E KEY_PERIOD // 46 .
  3081. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  3082. #define ASCII_30 KEY_0 // 48 0
  3083. #define ASCII_31 KEY_1 // 49 1
  3084. #define ASCII_32 KEY_2 // 50 2
  3085. #define ASCII_33 KEY_3 // 51 3
  3086. #define ASCII_34 KEY_4 // 52 4
  3087. #define ASCII_35 KEY_5 // 53 5
  3088. #define ASCII_36 KEY_6 // 54 6
  3089. #define ASCII_37 KEY_7 // 55 7
  3090. #define ASCII_38 KEY_8 // 55 8
  3091. #define ASCII_39 KEY_9 // 57 9
  3092. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  3093. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  3094. #define ASCII_3C KEY_NON_US_100 // 60 <
  3095. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  3096. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  3097. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  3098. #define ASCII_40 KEY_SEMICOLON + ALTGR_MASK // 64 @
  3099. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  3100. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  3101. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  3102. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  3103. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  3104. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  3105. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  3106. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  3107. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  3108. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  3109. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  3110. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  3111. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  3112. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  3113. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  3114. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  3115. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  3116. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  3117. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  3118. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  3119. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  3120. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  3121. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  3122. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  3123. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  3124. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  3125. #define ASCII_5B KEY_LEFT_BRACE + ALTGR_MASK // 91 [
  3126. #define ASCII_5C KEY_TILDE // 92
  3127. #define ASCII_5D KEY_RIGHT_BRACE + ALTGR_MASK // 93 ]
  3128. #define ASCII_5E KEY_EQUAL + SHIFT_MASK // 94 ^
  3129. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  3130. #define ASCII_60 0 // 96 ` (how to type this on Italian?)
  3131. #define ASCII_61 KEY_A // 97 a
  3132. #define ASCII_62 KEY_B // 98 b
  3133. #define ASCII_63 KEY_C // 99 c
  3134. #define ASCII_64 KEY_D // 100 d
  3135. #define ASCII_65 KEY_E // 101 e
  3136. #define ASCII_66 KEY_F // 102 f
  3137. #define ASCII_67 KEY_G // 103 g
  3138. #define ASCII_68 KEY_H // 104 h
  3139. #define ASCII_69 KEY_I // 105 i
  3140. #define ASCII_6A KEY_J // 106 j
  3141. #define ASCII_6B KEY_K // 107 k
  3142. #define ASCII_6C KEY_L // 108 l
  3143. #define ASCII_6D KEY_M // 109 m
  3144. #define ASCII_6E KEY_N // 110 n
  3145. #define ASCII_6F KEY_O // 111 o
  3146. #define ASCII_70 KEY_P // 112 p
  3147. #define ASCII_71 KEY_Q // 113 q
  3148. #define ASCII_72 KEY_R // 114 r
  3149. #define ASCII_73 KEY_S // 115 s
  3150. #define ASCII_74 KEY_T // 116 t
  3151. #define ASCII_75 KEY_U // 117 u
  3152. #define ASCII_76 KEY_V // 118 v
  3153. #define ASCII_77 KEY_W // 119 w
  3154. #define ASCII_78 KEY_X // 120 x
  3155. #define ASCII_79 KEY_Y // 121 y
  3156. #define ASCII_7A KEY_Z // 122 z
  3157. #define ASCII_7B KEY_LEFT_BRACE + SHIFT_MASK + ALTGR_MASK // 123 {
  3158. #define ASCII_7C KEY_TILDE + SHIFT_MASK // 124 |
  3159. #define ASCII_7D KEY_RIGHT_BRACE + SHIFT_MASK + ALTGR_MASK // 125 }
  3160. #define ASCII_7E 0 // 126 ~ (how to type this on Italian?)
  3161. #define ASCII_7F KEY_BACKSPACE // 127
  3162. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  3163. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  3164. #define ISO_8859_1_A2 0 // 162 ¢ Cent Sign
  3165. #define ISO_8859_1_A3 KEY_3 + SHIFT_MASK // 163 £ Pound Sign
  3166. #define ISO_8859_1_A4 0 // 164 ¤ Currency Sign
  3167. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  3168. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  3169. #define ISO_8859_1_A7 KEY_BACKSLASH + SHIFT_MASK // 167 § SECTION SIGN
  3170. #define ISO_8859_1_A8 0 // 168 ¨ DIAERESIS
  3171. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  3172. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  3173. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  3174. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  3175. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  3176. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  3177. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  3178. #define ISO_8859_1_B0 KEY_QUOTE + SHIFT_MASK // 176 ° DEGREE SIGN
  3179. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  3180. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  3181. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  3182. #define ISO_8859_1_B4 0 // 180 ´ ACUTE ACCENT
  3183. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  3184. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  3185. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  3186. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  3187. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  3188. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  3189. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  3190. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  3191. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  3192. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  3193. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  3194. #define ISO_8859_1_C0 0 // 192 À A GRAVE
  3195. #define ISO_8859_1_C1 0 // 193 Á A ACUTE
  3196. #define ISO_8859_1_C2 0 // 194 Â A CIRCUMFLEX
  3197. #define ISO_8859_1_C3 0 // 195 Ã A TILDE
  3198. #define ISO_8859_1_C4 0 // 196 Ä A DIAERESIS
  3199. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  3200. #define ISO_8859_1_C6 0 // 198 Æ AE
  3201. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  3202. #define ISO_8859_1_C8 0 // 200 È E GRAVE
  3203. #define ISO_8859_1_C9 0 // 201 É E ACUTE
  3204. #define ISO_8859_1_CA 0 // 202 Ê E CIRCUMFLEX
  3205. #define ISO_8859_1_CB 0 // 203 Ë E DIAERESIS
  3206. #define ISO_8859_1_CC 0 // 204 Ì I GRAVE
  3207. #define ISO_8859_1_CD 0 // 205 Í I ACUTE
  3208. #define ISO_8859_1_CE 0 // 206 Î I CIRCUMFLEX
  3209. #define ISO_8859_1_CF 0 // 207 Ï I DIAERESIS
  3210. #define ISO_8859_1_D0 0 // 208 Ð ETH
  3211. #define ISO_8859_1_D1 0 // 209 Ñ N TILDE
  3212. #define ISO_8859_1_D2 0 // 210 Ò O GRAVE
  3213. #define ISO_8859_1_D3 0 // 211 Ó O ACUTE
  3214. #define ISO_8859_1_D4 0 // 212 Ô O CIRCUMFLEX
  3215. #define ISO_8859_1_D5 0 // 213 Õ O TILDE
  3216. #define ISO_8859_1_D6 0 // 214 Ö O DIAERESIS
  3217. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  3218. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  3219. #define ISO_8859_1_D9 0 // 217 Ù U GRAVE
  3220. #define ISO_8859_1_DA 0 // 218 Ú U ACUTE
  3221. #define ISO_8859_1_DB 0 // 219 Û U CIRCUMFLEX
  3222. #define ISO_8859_1_DC 0 // 220 Ü U DIAERESIS
  3223. #define ISO_8859_1_DD 0 // 221 Ý Y ACUTE
  3224. #define ISO_8859_1_DE 0 // 222 Þ THORN
  3225. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  3226. #define ISO_8859_1_E0 KEY_QUOTE // 224 à a GRAVE
  3227. #define ISO_8859_1_E1 0 // 225 á a ACUTE
  3228. #define ISO_8859_1_E2 0 // 226 â a CIRCUMFLEX
  3229. #define ISO_8859_1_E3 0 // 227 ã a TILDE
  3230. #define ISO_8859_1_E4 0 // 228 ä a DIAERESIS
  3231. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  3232. #define ISO_8859_1_E6 0 // 230 æ ae
  3233. #define ISO_8859_1_E7 KEY_SEMICOLON + SHIFT_MASK // 231 ç c CEDILLA
  3234. #define ISO_8859_1_E8 KEY_LEFT_BRACE // 232 è e GRAVE
  3235. #define ISO_8859_1_E9 KEY_LEFT_BRACE + SHIFT_MASK // 233 é e ACUTE
  3236. #define ISO_8859_1_EA 0 // 234 ê e CIRCUMFLEX
  3237. #define ISO_8859_1_EB 0 // 235 ë e DIAERESIS
  3238. #define ISO_8859_1_EC KEY_EQUAL // 236 ì i GRAVE
  3239. #define ISO_8859_1_ED 0 // 237 í i ACUTE
  3240. #define ISO_8859_1_EE 0 // 238 î i CIRCUMFLEX
  3241. #define ISO_8859_1_EF 0 // 239 ï i DIAERESIS
  3242. #define ISO_8859_1_F0 0 // 240 ð ETH
  3243. #define ISO_8859_1_F1 0 // 241 ñ n TILDE
  3244. #define ISO_8859_1_F2 KEY_SEMICOLON // 242 ò o GRAVE
  3245. #define ISO_8859_1_F3 0 // 243 ó o ACUTE
  3246. #define ISO_8859_1_F4 0 // 244 ô o CIRCUMFLEX
  3247. #define ISO_8859_1_F5 0 // 245 õ o TILDE
  3248. #define ISO_8859_1_F6 0 // 246 ö o DIAERESIS
  3249. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  3250. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  3251. #define ISO_8859_1_F9 KEY_BACKSLASH // 249 ù u GRAVE
  3252. #define ISO_8859_1_FA 0 // 250 ú u ACUTE
  3253. #define ISO_8859_1_FB 0 // 251 û u CIRCUMFLEX
  3254. #define ISO_8859_1_FC 0 // 252 ü u DIAERESIS
  3255. #define ISO_8859_1_FD 0 // 253 ý y ACUTE
  3256. #define ISO_8859_1_FE 0 // 254 þ THORN
  3257. #define ISO_8859_1_FF 0 // 255 ÿ y DIAERESIS
  3258. #endif // LAYOUT_ITALIAN
  3259. #ifdef LAYOUT_PORTUGUESE_BRAZILIAN
  3260. #define SHIFT_MASK 0x0040
  3261. #define ALTGR_MASK 0x0080
  3262. #define DEADKEYS_MASK 0x0700
  3263. #define CIRCUMFLEX_BITS 0x0100
  3264. #define ACUTE_ACCENT_BITS 0x0200
  3265. #define GRAVE_ACCENT_BITS 0x0300
  3266. #define TILDE_BITS 0x0400
  3267. #define DIAERESIS_BITS 0x0500
  3268. #define KEYCODE_TYPE uint16_t
  3269. #define DEADKEY_CIRCUMFLEX KEY_QUOTE + SHIFT_MASK
  3270. #define DEADKEY_ACUTE_ACCENT KEY_LEFT_BRACE
  3271. #define DEADKEY_GRAVE_ACCENT KEY_LEFT_BRACE + SHIFT_MASK
  3272. #define DEADKEY_TILDE KEY_QUOTE
  3273. #define DEADKEY_DIAERESIS KEY_6 + SHIFT_MASK
  3274. #define KEY_NON_US_100 63
  3275. #define ASCII_20 KEY_SPACE // 32
  3276. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  3277. #define ASCII_22 KEY_TILDE + SHIFT_MASK // 34 "
  3278. #define ASCII_23 KEY_3 + ALTGR_MASK // 35 #
  3279. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  3280. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  3281. #define ASCII_26 KEY_7 + SHIFT_MASK // 38 &
  3282. #define ASCII_27 KEY_TILDE // 39 '
  3283. #define ASCII_28 KEY_9 + SHIFT_MASK // 40 (
  3284. #define ASCII_29 KEY_0 + SHIFT_MASK // 41 )
  3285. #define ASCII_2A KEY_7 + SHIFT_MASK // 42 *
  3286. #define ASCII_2B KEY_EQUAL + SHIFT_MASK // 43 +
  3287. #define ASCII_2C KEY_COMMA // 44 ,
  3288. #define ASCII_2D KEY_MINUS // 45 -
  3289. #define ASCII_2E KEY_PERIOD // 46 .
  3290. #define ASCII_2F KEY_Q + ALTGR_MASK // 47 /
  3291. #define ASCII_30 KEY_0 // 48 0
  3292. #define ASCII_31 KEY_1 // 49 1
  3293. #define ASCII_32 KEY_2 // 50 2
  3294. #define ASCII_33 KEY_3 // 51 3
  3295. #define ASCII_34 KEY_4 // 52 4
  3296. #define ASCII_35 KEY_5 // 53 5
  3297. #define ASCII_36 KEY_6 // 54 6
  3298. #define ASCII_37 KEY_7 // 55 7
  3299. #define ASCII_38 KEY_8 // 55 8
  3300. #define ASCII_39 KEY_9 // 57 9
  3301. #define ASCII_3A KEY_SLASH + SHIFT_MASK // 58 :
  3302. #define ASCII_3B KEY_SLASH // 59 ;
  3303. #define ASCII_3C KEY_COMMA + SHIFT_MASK // 60 <
  3304. #define ASCII_3D KEY_EQUAL // 61 =
  3305. #define ASCII_3E KEY_PERIOD + SHIFT_MASK // 62 >
  3306. #define ASCII_3F KEY_W + ALTGR_MASK // 63 ?
  3307. #define ASCII_40 KEY_2 + SHIFT_MASK // 64 @
  3308. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  3309. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  3310. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  3311. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  3312. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  3313. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  3314. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  3315. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  3316. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  3317. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  3318. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  3319. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  3320. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  3321. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  3322. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  3323. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  3324. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  3325. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  3326. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  3327. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  3328. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  3329. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  3330. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  3331. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  3332. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  3333. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  3334. #define ASCII_5B KEY_RIGHT_BRACE // 91 [
  3335. #define ASCII_5C KEY_NON_US_100 // 92
  3336. #define ASCII_5D KEY_BACKSLASH // 93 ]
  3337. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  3338. #define ASCII_5F KEY_MINUS + SHIFT_MASK // 95 _
  3339. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  3340. #define ASCII_61 KEY_A // 97 a
  3341. #define ASCII_62 KEY_B // 98 b
  3342. #define ASCII_63 KEY_C // 99 c
  3343. #define ASCII_64 KEY_D // 100 d
  3344. #define ASCII_65 KEY_E // 101 e
  3345. #define ASCII_66 KEY_F // 102 f
  3346. #define ASCII_67 KEY_G // 103 g
  3347. #define ASCII_68 KEY_H // 104 h
  3348. #define ASCII_69 KEY_I // 105 i
  3349. #define ASCII_6A KEY_J // 106 j
  3350. #define ASCII_6B KEY_K // 107 k
  3351. #define ASCII_6C KEY_L // 108 l
  3352. #define ASCII_6D KEY_M // 109 m
  3353. #define ASCII_6E KEY_N // 110 n
  3354. #define ASCII_6F KEY_O // 111 o
  3355. #define ASCII_70 KEY_P // 112 p
  3356. #define ASCII_71 KEY_Q // 113 q
  3357. #define ASCII_72 KEY_R // 114 r
  3358. #define ASCII_73 KEY_S // 115 s
  3359. #define ASCII_74 KEY_T // 116 t
  3360. #define ASCII_75 KEY_U // 117 u
  3361. #define ASCII_76 KEY_V // 118 v
  3362. #define ASCII_77 KEY_W // 119 w
  3363. #define ASCII_78 KEY_X // 120 x
  3364. #define ASCII_79 KEY_Y // 121 y
  3365. #define ASCII_7A KEY_Z // 122 z
  3366. #define ASCII_7B KEY_RIGHT_BRACE + SHIFT_MASK // 123 {
  3367. #define ASCII_7C KEY_NON_US_100 + SHIFT_MASK // 124 |
  3368. #define ASCII_7D KEY_BACKSLASH + SHIFT_MASK // 125 }
  3369. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  3370. #define ASCII_7F KEY_BACKSPACE // 127
  3371. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  3372. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  3373. #define ISO_8859_1_A2 KEY_5 + ALTGR_MASK // 162 ¢ Cent SIGN
  3374. #define ISO_8859_1_A3 KEY_4 + ALTGR_MASK // 163 £ Pound Sign
  3375. #define ISO_8859_1_A4 0 // 164 ¤ Currency Sign
  3376. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  3377. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  3378. #define ISO_8859_1_A7 KEY_EQUAL + ALTGR_MASK // 167 § SECTION SIGN
  3379. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  3380. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  3381. #define ISO_8859_1_AA KEY_RIGHT_BRACE + ALTGR_MASK // 170 ª FEMININE ORDINAL
  3382. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  3383. #define ISO_8859_1_AC KEY_6 + ALTGR_MASK // 172 ¬ NOT SIGN
  3384. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  3385. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  3386. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  3387. #define ISO_8859_1_B0 KEY_E + ALTGR_MASK // 176 ° DEGREE SIGN
  3388. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  3389. #define ISO_8859_1_B2 KEY_2 + ALTGR_MASK // 178 ² SUPERSCRIPT TWO
  3390. #define ISO_8859_1_B3 KEY_2 + ALTGR_MASK // 179 ³ SUPERSCRIPT THREE
  3391. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  3392. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  3393. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  3394. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  3395. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  3396. #define ISO_8859_1_B9 KEY_1 + ALTGR_MASK // 185 ¹ SUPERSCRIPT ONE
  3397. #define ISO_8859_1_BA KEY_BACKSLASH + ALTGR_MASK // 186 º MASCULINE ORDINAL
  3398. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  3399. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  3400. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  3401. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  3402. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  3403. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  3404. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  3405. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  3406. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  3407. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  3408. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  3409. #define ISO_8859_1_C6 0 // 198 Æ AE
  3410. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  3411. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  3412. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  3413. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  3414. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  3415. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  3416. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  3417. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  3418. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  3419. #define ISO_8859_1_D0 0 // 208 Ð ETH
  3420. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  3421. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  3422. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  3423. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  3424. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  3425. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  3426. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  3427. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  3428. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  3429. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  3430. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  3431. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  3432. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  3433. #define ISO_8859_1_DE 0 // 222 Þ THORN
  3434. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  3435. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  3436. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  3437. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  3438. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  3439. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  3440. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  3441. #define ISO_8859_1_E6 0 // 230 æ ae
  3442. #define ISO_8859_1_E7 0 // 231 ç c CEDILLA
  3443. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  3444. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  3445. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  3446. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  3447. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  3448. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  3449. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  3450. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  3451. #define ISO_8859_1_F0 0 // 240 ð ETH
  3452. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  3453. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  3454. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  3455. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  3456. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  3457. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  3458. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  3459. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  3460. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  3461. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  3462. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  3463. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  3464. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  3465. #define ISO_8859_1_FE 0 // 254 þ THORN
  3466. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  3467. #endif // LAYOUT_PORTUGUESE_BRAZILIAN
  3468. #ifdef LAYOUT_FRENCH_BELGIAN
  3469. #define SHIFT_MASK 0x0040
  3470. #define ALTGR_MASK 0x0080
  3471. #define DEADKEYS_MASK 0x0700
  3472. #define CIRCUMFLEX_BITS 0x0100
  3473. #define GRAVE_ACCENT_BITS 0x0200
  3474. #define DIAERESIS_BITS 0x0300
  3475. #define TILDE_BITS 0x0400
  3476. #define ACUTE_ACCENT_BITS 0x0500
  3477. #define KEYCODE_TYPE uint16_t
  3478. #define DEADKEY_CIRCUMFLEX KEY_LEFT_BRACE
  3479. #define DEADKEY_ACUTE_ACCENT KEY_QUOTE + ALTGR_MASK
  3480. #define DEADKEY_GRAVE_ACCENT KEY_BACKSLASH + ALTGR_MASK
  3481. #define DEADKEY_DIAERESIS KEY_LEFT_BRACE + SHIFT_MASK
  3482. #define DEADKEY_TILDE KEY_SLASH + ALTGR_MASK
  3483. #define KEY_NON_US_100 63
  3484. #define ASCII_20 KEY_SPACE // 32
  3485. #define ASCII_21 KEY_8 // 33 !
  3486. #define ASCII_22 KEY_3 // 34 "
  3487. #define ASCII_23 KEY_3 + ALTGR_MASK // 35 #
  3488. #define ASCII_24 KEY_RIGHT_BRACE // 36 $
  3489. #define ASCII_25 KEY_QUOTE + SHIFT_MASK // 37 %
  3490. #define ASCII_26 KEY_1 // 38 &
  3491. #define ASCII_27 KEY_4 // 39 '
  3492. #define ASCII_28 KEY_5 // 40 (
  3493. #define ASCII_29 KEY_MINUS // 41 )
  3494. #define ASCII_2A KEY_RIGHT_BRACE + SHIFT_MASK // 42 *
  3495. #define ASCII_2B KEY_SLASH + SHIFT_MASK // 43 +
  3496. #define ASCII_2C KEY_M // 44 ,
  3497. #define ASCII_2D KEY_EQUAL // 45 -
  3498. #define ASCII_2E KEY_COMMA + SHIFT_MASK // 46 .
  3499. #define ASCII_2F KEY_PERIOD + SHIFT_MASK // 47 /
  3500. #define ASCII_30 KEY_0 + SHIFT_MASK // 48 0
  3501. #define ASCII_31 KEY_1 + SHIFT_MASK // 49 1
  3502. #define ASCII_32 KEY_2 + SHIFT_MASK // 50 2
  3503. #define ASCII_33 KEY_3 + SHIFT_MASK // 51 3
  3504. #define ASCII_34 KEY_4 + SHIFT_MASK // 52 4
  3505. #define ASCII_35 KEY_5 + SHIFT_MASK // 53 5
  3506. #define ASCII_36 KEY_6 + SHIFT_MASK // 54 6
  3507. #define ASCII_37 KEY_7 + SHIFT_MASK // 55 7
  3508. #define ASCII_38 KEY_8 + SHIFT_MASK // 55 8
  3509. #define ASCII_39 KEY_9 + SHIFT_MASK // 57 9
  3510. #define ASCII_3A KEY_PERIOD // 58 :
  3511. #define ASCII_3B KEY_COMMA // 59 ;
  3512. #define ASCII_3C KEY_NON_US_100 // 60 <
  3513. #define ASCII_3D KEY_SLASH // 61 =
  3514. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  3515. #define ASCII_3F KEY_M + SHIFT_MASK // 63 ?
  3516. #define ASCII_40 KEY_2 + ALTGR_MASK // 64 @
  3517. #define ASCII_41 KEY_Q + SHIFT_MASK // 65 A
  3518. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  3519. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  3520. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  3521. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  3522. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  3523. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  3524. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  3525. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  3526. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  3527. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  3528. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  3529. #define ASCII_4D KEY_SEMICOLON + SHIFT_MASK // 77 M
  3530. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  3531. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  3532. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  3533. #define ASCII_51 KEY_A + SHIFT_MASK // 81 Q
  3534. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  3535. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  3536. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  3537. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  3538. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  3539. #define ASCII_57 KEY_Z + SHIFT_MASK // 87 W
  3540. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  3541. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  3542. #define ASCII_5A KEY_W + SHIFT_MASK // 90 Z
  3543. #define ASCII_5B KEY_RIGHT_BRACE + ALTGR_MASK // 91 [
  3544. #define ASCII_5C KEY_NON_US_100 + ALTGR_MASK // 92
  3545. #define ASCII_5D KEY_LEFT_BRACE + ALTGR_MASK // 93 ]
  3546. #define ASCII_5E KEY_6 + ALTGR_MASK // 94 ^
  3547. #define ASCII_5F KEY_EQUAL + SHIFT_MASK // 95 _
  3548. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  3549. #define ASCII_61 KEY_Q // 97 a
  3550. #define ASCII_62 KEY_B // 98 b
  3551. #define ASCII_63 KEY_C // 99 c
  3552. #define ASCII_64 KEY_D // 100 d
  3553. #define ASCII_65 KEY_E // 101 e
  3554. #define ASCII_66 KEY_F // 102 f
  3555. #define ASCII_67 KEY_G // 103 g
  3556. #define ASCII_68 KEY_H // 104 h
  3557. #define ASCII_69 KEY_I // 105 i
  3558. #define ASCII_6A KEY_J // 106 j
  3559. #define ASCII_6B KEY_K // 107 k
  3560. #define ASCII_6C KEY_L // 108 l
  3561. #define ASCII_6D KEY_SEMICOLON // 109 m
  3562. #define ASCII_6E KEY_N // 110 n
  3563. #define ASCII_6F KEY_O // 111 o
  3564. #define ASCII_70 KEY_P // 112 p
  3565. #define ASCII_71 KEY_A // 113 q
  3566. #define ASCII_72 KEY_R // 114 r
  3567. #define ASCII_73 KEY_S // 115 s
  3568. #define ASCII_74 KEY_T // 116 t
  3569. #define ASCII_75 KEY_U // 117 u
  3570. #define ASCII_76 KEY_V // 118 v
  3571. #define ASCII_77 KEY_Z // 119 w
  3572. #define ASCII_78 KEY_X // 120 x
  3573. #define ASCII_79 KEY_Y // 121 y
  3574. #define ASCII_7A KEY_W // 122 z
  3575. #define ASCII_7B KEY_9 + ALTGR_MASK // 123 {
  3576. #define ASCII_7C KEY_1 + ALTGR_MASK // 124 |
  3577. #define ASCII_7D KEY_0 + ALTGR_MASK // 125 }
  3578. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  3579. #define ASCII_7F KEY_BACKSPACE // 127
  3580. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  3581. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  3582. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  3583. #define ISO_8859_1_A3 KEY_BACKSLASH + SHIFT_MASK // 163 £ Pound Sign
  3584. #define ISO_8859_1_A4 0 // 164 ¤ Currency or Euro Sign
  3585. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  3586. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  3587. #define ISO_8859_1_A7 KEY_6 // 167 § SECTION SIGN
  3588. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  3589. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  3590. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  3591. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  3592. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  3593. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  3594. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  3595. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  3596. #define ISO_8859_1_B0 KEY_MINUS + SHIFT_MASK // 176 ° DEGREE SIGN
  3597. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  3598. #define ISO_8859_1_B2 KEY_TILDE // 178 ² SUPERSCRIPT TWO
  3599. #define ISO_8859_1_B3 KEY_TILDE + SHIFT_MASK // 179 ³ SUPERSCRIPT THREE
  3600. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  3601. #define ISO_8859_1_B5 KEY_BACKSLASH // 181 µ MICRO SIGN
  3602. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  3603. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  3604. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  3605. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  3606. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  3607. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  3608. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  3609. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  3610. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  3611. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  3612. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_Q + SHIFT_MASK // 192 À A GRAVE
  3613. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_Q + SHIFT_MASK // 193 Á A ACUTE
  3614. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_Q + SHIFT_MASK // 194 Â A CIRCUMFLEX
  3615. #define ISO_8859_1_C3 TILDE_BITS + KEY_Q + SHIFT_MASK // 195 Ã A TILDE
  3616. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_Q + SHIFT_MASK // 196 Ä A DIAERESIS
  3617. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  3618. #define ISO_8859_1_C6 0 // 198 Æ AE
  3619. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  3620. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  3621. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  3622. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  3623. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  3624. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  3625. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  3626. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  3627. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  3628. #define ISO_8859_1_D0 0 // 208 Ð ETH
  3629. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  3630. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  3631. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  3632. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  3633. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  3634. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  3635. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  3636. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  3637. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  3638. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  3639. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  3640. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U // 220 Ü U DIAERESIS
  3641. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  3642. #define ISO_8859_1_DE 0 // 222 Þ THORN
  3643. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  3644. #define ISO_8859_1_E0 KEY_0 // 224 à a GRAVE
  3645. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_Q // 225 á a ACUTE
  3646. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_Q // 226 â a CIRCUMFLEX
  3647. #define ISO_8859_1_E3 TILDE_BITS + KEY_Q // 227 ã a TILDE
  3648. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_Q // 228 ä a DIAERESIS
  3649. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  3650. #define ISO_8859_1_E6 0 // 230 æ ae
  3651. #define ISO_8859_1_E7 KEY_9 // 231 ç c CEDILLA
  3652. #define ISO_8859_1_E8 KEY_7 // 232 è e GRAVE
  3653. #define ISO_8859_1_E9 KEY_2 // 233 é e ACUTE
  3654. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  3655. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  3656. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  3657. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  3658. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  3659. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  3660. #define ISO_8859_1_F0 0 // 240 ð ETH
  3661. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  3662. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  3663. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  3664. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  3665. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  3666. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  3667. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  3668. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  3669. #define ISO_8859_1_F9 KEY_QUOTE // 249 ù u GRAVE - TODO; check FRENCH
  3670. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  3671. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  3672. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  3673. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  3674. #define ISO_8859_1_FE 0 // 254 þ THORN
  3675. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  3676. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  3677. // not yet implemented
  3678. #define UNICODE_EXTRA00 0x20AC
  3679. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  3680. #endif // LAYOUT_FRENCH_BELGIAN
  3681. #ifdef LAYOUT_GERMAN_SWISS
  3682. #define SHIFT_MASK 0x0040
  3683. #define ALTGR_MASK 0x0080
  3684. #define DEADKEYS_MASK 0x0700
  3685. #define CIRCUMFLEX_BITS 0x0100
  3686. #define GRAVE_ACCENT_BITS 0x0200
  3687. #define DIAERESIS_BITS 0x0300
  3688. #define TILDE_BITS 0x0400
  3689. #define ACUTE_ACCENT_BITS 0x0500
  3690. #define KEYCODE_TYPE uint16_t
  3691. #define DEADKEY_CIRCUMFLEX KEY_EQUAL
  3692. #define DEADKEY_ACUTE_ACCENT KEY_MINUS + ALTGR_MASK
  3693. #define DEADKEY_GRAVE_ACCENT KEY_EQUAL + SHIFT_MASK
  3694. #define DEADKEY_DIAERESIS KEY_RIGHT_BRACE
  3695. #define DEADKEY_TILDE KEY_EQUAL + ALTGR_MASK
  3696. #define KEY_NON_US_100 63
  3697. #define ASCII_20 KEY_SPACE // 32
  3698. #define ASCII_21 KEY_RIGHT_BRACE + SHIFT_MASK // 33 !
  3699. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  3700. #define ASCII_23 KEY_3 + ALTGR_MASK // 35 #
  3701. #define ASCII_24 KEY_BACKSLASH // 36 $
  3702. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  3703. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  3704. #define ASCII_27 KEY_MINUS // 39 '
  3705. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  3706. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  3707. #define ASCII_2A KEY_3 + SHIFT_MASK // 42 *
  3708. #define ASCII_2B KEY_1 + SHIFT_MASK // 43 +
  3709. #define ASCII_2C KEY_COMMA // 44 ,
  3710. #define ASCII_2D KEY_SLASH // 45 -
  3711. #define ASCII_2E KEY_PERIOD // 46 .
  3712. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  3713. #define ASCII_30 KEY_0 // 48 0
  3714. #define ASCII_31 KEY_1 // 49 1
  3715. #define ASCII_32 KEY_2 // 50 2
  3716. #define ASCII_33 KEY_3 // 51 3
  3717. #define ASCII_34 KEY_4 // 52 4
  3718. #define ASCII_35 KEY_5 // 53 5
  3719. #define ASCII_36 KEY_6 // 54 6
  3720. #define ASCII_37 KEY_7 // 55 7
  3721. #define ASCII_38 KEY_8 // 55 8
  3722. #define ASCII_39 KEY_9 // 57 9
  3723. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  3724. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  3725. #define ASCII_3C KEY_NON_US_100 // 60 <
  3726. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  3727. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  3728. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  3729. #define ASCII_40 KEY_2 + ALTGR_MASK // 64 @
  3730. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  3731. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  3732. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  3733. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  3734. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  3735. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  3736. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  3737. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  3738. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  3739. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  3740. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  3741. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  3742. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  3743. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  3744. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  3745. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  3746. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  3747. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  3748. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  3749. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  3750. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  3751. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  3752. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  3753. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  3754. #define ASCII_59 KEY_Z + SHIFT_MASK // 89 Y
  3755. #define ASCII_5A KEY_Y + SHIFT_MASK // 90 Z
  3756. #define ASCII_5B KEY_LEFT_BRACE + ALTGR_MASK // 91 [
  3757. #define ASCII_5C KEY_NON_US_100 + ALTGR_MASK // 92
  3758. #define ASCII_5D KEY_RIGHT_BRACE + ALTGR_MASK // 93 ]
  3759. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  3760. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  3761. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  3762. #define ASCII_61 KEY_A // 97 a
  3763. #define ASCII_62 KEY_B // 98 b
  3764. #define ASCII_63 KEY_C // 99 c
  3765. #define ASCII_64 KEY_D // 100 d
  3766. #define ASCII_65 KEY_E // 101 e
  3767. #define ASCII_66 KEY_F // 102 f
  3768. #define ASCII_67 KEY_G // 103 g
  3769. #define ASCII_68 KEY_H // 104 h
  3770. #define ASCII_69 KEY_I // 105 i
  3771. #define ASCII_6A KEY_J // 106 j
  3772. #define ASCII_6B KEY_K // 107 k
  3773. #define ASCII_6C KEY_L // 108 l
  3774. #define ASCII_6D KEY_M // 109 m
  3775. #define ASCII_6E KEY_N // 110 n
  3776. #define ASCII_6F KEY_O // 111 o
  3777. #define ASCII_70 KEY_P // 112 p
  3778. #define ASCII_71 KEY_Q // 113 q
  3779. #define ASCII_72 KEY_R // 114 r
  3780. #define ASCII_73 KEY_S // 115 s
  3781. #define ASCII_74 KEY_T // 116 t
  3782. #define ASCII_75 KEY_U // 117 u
  3783. #define ASCII_76 KEY_V // 118 v
  3784. #define ASCII_77 KEY_W // 119 w
  3785. #define ASCII_78 KEY_X // 120 x
  3786. #define ASCII_79 KEY_Z // 121 y
  3787. #define ASCII_7A KEY_Y // 122 z
  3788. #define ASCII_7B KEY_QUOTE + ALTGR_MASK // 123 {
  3789. #define ASCII_7C KEY_7 + ALTGR_MASK // 124 |
  3790. #define ASCII_7D KEY_BACKSLASH + ALTGR_MASK // 125 }
  3791. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  3792. #define ASCII_7F KEY_BACKSPACE // 127
  3793. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  3794. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  3795. #define ISO_8859_1_A2 KEY_8 + ALTGR_MASK // 162 ¢ Cent Sign
  3796. #define ISO_8859_1_A3 KEY_BACKSLASH + SHIFT_MASK // 163 £ Pound Sign
  3797. #define ISO_8859_1_A4 0 // 164 ¤ Currency Sign
  3798. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  3799. #define ISO_8859_1_A6 KEY_1 + ALTGR_MASK // 166 ¦ BROKEN BAR
  3800. #define ISO_8859_1_A7 KEY_5 + ALTGR_MASK // 167 § SECTION SIGN
  3801. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  3802. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  3803. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  3804. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  3805. #define ISO_8859_1_AC KEY_6 + ALTGR_MASK // 172 ¬ NOT SIGN
  3806. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  3807. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  3808. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  3809. #define ISO_8859_1_B0 KEY_4 + ALTGR_MASK // 176 ° DEGREE SIGN
  3810. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  3811. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  3812. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  3813. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  3814. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  3815. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  3816. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  3817. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  3818. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  3819. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  3820. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  3821. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  3822. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  3823. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  3824. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  3825. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  3826. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  3827. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  3828. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  3829. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  3830. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  3831. #define ISO_8859_1_C6 0 // 198 Æ AE
  3832. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  3833. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  3834. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  3835. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  3836. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  3837. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  3838. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  3839. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  3840. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  3841. #define ISO_8859_1_D0 0 // 208 Ð ETH
  3842. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  3843. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  3844. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  3845. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  3846. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  3847. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  3848. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  3849. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  3850. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  3851. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  3852. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  3853. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  3854. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  3855. #define ISO_8859_1_DE 0 // 222 Þ THORN
  3856. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  3857. #define ISO_8859_1_E0 KEY_QUOTE + SHIFT_MASK // 224 à a GRAVE
  3858. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  3859. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  3860. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  3861. #define ISO_8859_1_E4 KEY_QUOTE // 228 ä a DIAERESIS
  3862. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  3863. #define ISO_8859_1_E6 0 // 230 æ ae
  3864. #define ISO_8859_1_E7 KEY_4 + SHIFT_MASK // 231 ç c CEDILLA
  3865. #define ISO_8859_1_E8 KEY_LEFT_BRACE + SHIFT_MASK // 232 è e GRAVE
  3866. #define ISO_8859_1_E9 KEY_SEMICOLON + SHIFT_MASK // 233 é e ACUTE
  3867. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  3868. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS TODO: check this
  3869. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  3870. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  3871. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  3872. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  3873. #define ISO_8859_1_F0 0 // 240 ð ETH
  3874. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  3875. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  3876. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  3877. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  3878. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  3879. #define ISO_8859_1_F6 KEY_SEMICOLON // 246 ö o DIAERESIS
  3880. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  3881. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  3882. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  3883. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  3884. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  3885. #define ISO_8859_1_FC KEY_LEFT_BRACE // 252 ü u DIAERESIS
  3886. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  3887. #define ISO_8859_1_FE 0 // 254 þ THORN
  3888. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  3889. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  3890. // not yet implemented
  3891. #define UNICODE_EXTRA00 0x20AC
  3892. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  3893. #endif // LAYOUT_GERMAN_SWISS
  3894. #ifdef LAYOUT_FRENCH_SWISS
  3895. #define SHIFT_MASK 0x0040
  3896. #define ALTGR_MASK 0x0080
  3897. #define DEADKEYS_MASK 0x0700
  3898. #define CIRCUMFLEX_BITS 0x0100
  3899. #define GRAVE_ACCENT_BITS 0x0200
  3900. #define DIAERESIS_BITS 0x0300
  3901. #define TILDE_BITS 0x0400
  3902. #define ACUTE_ACCENT_BITS 0x0500
  3903. #define KEYCODE_TYPE uint16_t
  3904. #define DEADKEY_CIRCUMFLEX KEY_EQUAL
  3905. #define DEADKEY_ACUTE_ACCENT KEY_MINUS + ALTGR_MASK
  3906. #define DEADKEY_GRAVE_ACCENT KEY_EQUAL + SHIFT_MASK
  3907. #define DEADKEY_DIAERESIS KEY_RIGHT_BRACE
  3908. #define DEADKEY_TILDE KEY_EQUAL + ALTGR_MASK
  3909. #define KEY_NON_US_100 63
  3910. #define ASCII_20 KEY_SPACE // 32
  3911. #define ASCII_21 KEY_RIGHT_BRACE + SHIFT_MASK // 33 !
  3912. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  3913. #define ASCII_23 KEY_3 + ALTGR_MASK // 35 #
  3914. #define ASCII_24 KEY_BACKSLASH // 36 $
  3915. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  3916. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  3917. #define ASCII_27 KEY_MINUS // 39 '
  3918. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  3919. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  3920. #define ASCII_2A KEY_3 + SHIFT_MASK // 42 *
  3921. #define ASCII_2B KEY_1 + SHIFT_MASK // 43 +
  3922. #define ASCII_2C KEY_COMMA // 44 ,
  3923. #define ASCII_2D KEY_SLASH // 45 -
  3924. #define ASCII_2E KEY_PERIOD // 46 .
  3925. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  3926. #define ASCII_30 KEY_0 // 48 0
  3927. #define ASCII_31 KEY_1 // 49 1
  3928. #define ASCII_32 KEY_2 // 50 2
  3929. #define ASCII_33 KEY_3 // 51 3
  3930. #define ASCII_34 KEY_4 // 52 4
  3931. #define ASCII_35 KEY_5 // 53 5
  3932. #define ASCII_36 KEY_6 // 54 6
  3933. #define ASCII_37 KEY_7 // 55 7
  3934. #define ASCII_38 KEY_8 // 55 8
  3935. #define ASCII_39 KEY_9 // 57 9
  3936. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  3937. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  3938. #define ASCII_3C KEY_NON_US_100 // 60 <
  3939. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  3940. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  3941. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  3942. #define ASCII_40 KEY_2 + ALTGR_MASK // 64 @
  3943. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  3944. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  3945. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  3946. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  3947. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  3948. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  3949. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  3950. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  3951. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  3952. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  3953. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  3954. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  3955. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  3956. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  3957. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  3958. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  3959. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  3960. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  3961. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  3962. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  3963. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  3964. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  3965. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  3966. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  3967. #define ASCII_59 KEY_Z + SHIFT_MASK // 89 Y
  3968. #define ASCII_5A KEY_Y + SHIFT_MASK // 90 Z
  3969. #define ASCII_5B KEY_LEFT_BRACE + ALTGR_MASK // 91 [
  3970. #define ASCII_5C KEY_NON_US_100 + ALTGR_MASK // 92
  3971. #define ASCII_5D KEY_RIGHT_BRACE + ALTGR_MASK // 93 ]
  3972. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  3973. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  3974. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  3975. #define ASCII_61 KEY_A // 97 a
  3976. #define ASCII_62 KEY_B // 98 b
  3977. #define ASCII_63 KEY_C // 99 c
  3978. #define ASCII_64 KEY_D // 100 d
  3979. #define ASCII_65 KEY_E // 101 e
  3980. #define ASCII_66 KEY_F // 102 f
  3981. #define ASCII_67 KEY_G // 103 g
  3982. #define ASCII_68 KEY_H // 104 h
  3983. #define ASCII_69 KEY_I // 105 i
  3984. #define ASCII_6A KEY_J // 106 j
  3985. #define ASCII_6B KEY_K // 107 k
  3986. #define ASCII_6C KEY_L // 108 l
  3987. #define ASCII_6D KEY_M // 109 m
  3988. #define ASCII_6E KEY_N // 110 n
  3989. #define ASCII_6F KEY_O // 111 o
  3990. #define ASCII_70 KEY_P // 112 p
  3991. #define ASCII_71 KEY_Q // 113 q
  3992. #define ASCII_72 KEY_R // 114 r
  3993. #define ASCII_73 KEY_S // 115 s
  3994. #define ASCII_74 KEY_T // 116 t
  3995. #define ASCII_75 KEY_U // 117 u
  3996. #define ASCII_76 KEY_V // 118 v
  3997. #define ASCII_77 KEY_W // 119 w
  3998. #define ASCII_78 KEY_X // 120 x
  3999. #define ASCII_79 KEY_Z // 121 y
  4000. #define ASCII_7A KEY_Y // 122 z
  4001. #define ASCII_7B KEY_QUOTE + ALTGR_MASK // 123 {
  4002. #define ASCII_7C KEY_7 + ALTGR_MASK // 124 |
  4003. #define ASCII_7D KEY_BACKSLASH + ALTGR_MASK // 125 }
  4004. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  4005. #define ASCII_7F KEY_BACKSPACE // 127
  4006. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  4007. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  4008. #define ISO_8859_1_A2 KEY_8 + ALTGR_MASK // 162 ¢ Cent Sign
  4009. #define ISO_8859_1_A3 KEY_BACKSLASH + SHIFT_MASK // 163 £ Pound Sign
  4010. #define ISO_8859_1_A4 0 // 164 ¤ Currency Sign
  4011. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  4012. #define ISO_8859_1_A6 KEY_1 + ALTGR_MASK // 166 ¦ BROKEN BAR
  4013. #define ISO_8859_1_A7 KEY_5 + ALTGR_MASK // 167 § SECTION SIGN
  4014. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  4015. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  4016. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  4017. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  4018. #define ISO_8859_1_AC KEY_6 + ALTGR_MASK // 172 ¬ NOT SIGN
  4019. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  4020. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  4021. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  4022. #define ISO_8859_1_B0 KEY_4 + ALTGR_MASK // 176 ° DEGREE SIGN
  4023. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  4024. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  4025. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  4026. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  4027. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  4028. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  4029. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  4030. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  4031. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  4032. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  4033. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  4034. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  4035. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  4036. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  4037. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  4038. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  4039. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  4040. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  4041. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  4042. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  4043. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  4044. #define ISO_8859_1_C6 0 // 198 Æ AE
  4045. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  4046. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  4047. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  4048. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  4049. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  4050. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  4051. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  4052. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  4053. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  4054. #define ISO_8859_1_D0 0 // 208 Ð ETH
  4055. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  4056. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  4057. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  4058. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  4059. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  4060. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  4061. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  4062. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  4063. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  4064. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  4065. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  4066. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  4067. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  4068. #define ISO_8859_1_DE 0 // 222 Þ THORN
  4069. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  4070. #define ISO_8859_1_E0 KEY_QUOTE // 224 à a GRAVE
  4071. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  4072. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  4073. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  4074. #define ISO_8859_1_E4 KEY_QUOTE + SHIFT_MASK // 228 ä a DIAERESIS
  4075. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  4076. #define ISO_8859_1_E6 0 // 230 æ ae
  4077. #define ISO_8859_1_E7 KEY_4 + SHIFT_MASK // 231 ç c CEDILLA
  4078. #define ISO_8859_1_E8 KEY_LEFT_BRACE // 232 è e GRAVE
  4079. #define ISO_8859_1_E9 KEY_SEMICOLON // 233 é e ACUTE
  4080. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  4081. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  4082. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  4083. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  4084. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  4085. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  4086. #define ISO_8859_1_F0 0 // 240 ð ETH
  4087. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  4088. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  4089. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  4090. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  4091. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  4092. #define ISO_8859_1_F6 KEY_SEMICOLON + SHIFT_MASK // 246 ö o DIAERESIS
  4093. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  4094. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  4095. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  4096. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  4097. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  4098. #define ISO_8859_1_FC KEY_LEFT_BRACE + SHIFT_MASK // 252 ü u DIAERESIS
  4099. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  4100. #define ISO_8859_1_FE 0 // 254 þ THORN
  4101. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  4102. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  4103. // not yet implemented
  4104. #define UNICODE_EXTRA00 0x20AC
  4105. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  4106. #endif // LAYOUT_FRENCH_SWISS
  4107. #ifdef LAYOUT_SPANISH_LATIN_AMERICA
  4108. #define SHIFT_MASK 0x0040
  4109. #define ALTGR_MASK 0x0080
  4110. #define DEADKEYS_MASK 0x0700
  4111. #define CIRCUMFLEX_BITS 0x0100
  4112. #define ACUTE_ACCENT_BITS 0x0200
  4113. #define GRAVE_ACCENT_BITS 0x0300
  4114. #define DIAERESIS_BITS 0x0400
  4115. #define KEYCODE_TYPE uint16_t
  4116. #define DEADKEY_CIRCUMFLEX KEY_QUOTE + ALTGR_MASK
  4117. #define DEADKEY_ACUTE_ACCENT KEY_LEFT_BRACE
  4118. #define DEADKEY_GRAVE_ACCENT KEY_BACKSLASH + ALTGR_MASK
  4119. #define DEADKEY_DIAERESIS KEY_LEFT_BRACE + SHIFT_MASK
  4120. #define KEY_NON_US_100 63
  4121. #define ASCII_20 KEY_SPACE // 32
  4122. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  4123. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  4124. #define ASCII_23 KEY_3 + ALTGR_MASK // 35 #
  4125. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  4126. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  4127. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  4128. #define ASCII_27 KEY_MINUS // 39 '
  4129. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  4130. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  4131. #define ASCII_2A KEY_RIGHT_BRACE + SHIFT_MASK // 42 *
  4132. #define ASCII_2B KEY_RIGHT_BRACE // 43 +
  4133. #define ASCII_2C KEY_COMMA // 44 ,
  4134. #define ASCII_2D KEY_SLASH // 45 -
  4135. #define ASCII_2E KEY_PERIOD // 46 .
  4136. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  4137. #define ASCII_30 KEY_0 // 48 0
  4138. #define ASCII_31 KEY_1 // 49 1
  4139. #define ASCII_32 KEY_2 // 50 2
  4140. #define ASCII_33 KEY_3 // 51 3
  4141. #define ASCII_34 KEY_4 // 52 4
  4142. #define ASCII_35 KEY_5 // 53 5
  4143. #define ASCII_36 KEY_6 // 54 6
  4144. #define ASCII_37 KEY_7 // 55 7
  4145. #define ASCII_38 KEY_8 // 55 8
  4146. #define ASCII_39 KEY_9 // 57 9
  4147. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  4148. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  4149. #define ASCII_3C KEY_NON_US_100 // 60 <
  4150. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  4151. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  4152. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  4153. #define ASCII_40 KEY_Q + ALTGR_MASK // 64 @
  4154. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  4155. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  4156. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  4157. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  4158. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  4159. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  4160. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  4161. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  4162. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  4163. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  4164. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  4165. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  4166. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  4167. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  4168. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  4169. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  4170. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  4171. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  4172. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  4173. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  4174. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  4175. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  4176. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  4177. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  4178. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  4179. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  4180. #define ASCII_5B KEY_QUOTE + SHIFT_MASK // 91 [
  4181. #define ASCII_5C KEY_MINUS + ALTGR_MASK // 92
  4182. #define ASCII_5D KEY_BACKSLASH + SHIFT_MASK // 93 ]
  4183. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  4184. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  4185. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  4186. #define ASCII_61 KEY_A // 97 a
  4187. #define ASCII_62 KEY_B // 98 b
  4188. #define ASCII_63 KEY_C // 99 c
  4189. #define ASCII_64 KEY_D // 100 d
  4190. #define ASCII_65 KEY_E // 101 e
  4191. #define ASCII_66 KEY_F // 102 f
  4192. #define ASCII_67 KEY_G // 103 g
  4193. #define ASCII_68 KEY_H // 104 h
  4194. #define ASCII_69 KEY_I // 105 i
  4195. #define ASCII_6A KEY_J // 106 j
  4196. #define ASCII_6B KEY_K // 107 k
  4197. #define ASCII_6C KEY_L // 108 l
  4198. #define ASCII_6D KEY_M // 109 m
  4199. #define ASCII_6E KEY_N // 110 n
  4200. #define ASCII_6F KEY_O // 111 o
  4201. #define ASCII_70 KEY_P // 112 p
  4202. #define ASCII_71 KEY_Q // 113 q
  4203. #define ASCII_72 KEY_R // 114 r
  4204. #define ASCII_73 KEY_S // 115 s
  4205. #define ASCII_74 KEY_T // 116 t
  4206. #define ASCII_75 KEY_U // 117 u
  4207. #define ASCII_76 KEY_V // 118 v
  4208. #define ASCII_77 KEY_W // 119 w
  4209. #define ASCII_78 KEY_X // 120 x
  4210. #define ASCII_79 KEY_Y // 121 y
  4211. #define ASCII_7A KEY_Z // 122 z
  4212. #define ASCII_7B KEY_QUOTE // 123 {
  4213. #define ASCII_7C KEY_TILDE // 124 |
  4214. #define ASCII_7D KEY_BACKSLASH // 125 }
  4215. #define ASCII_7E KEY_RIGHT_BRACE + ALTGR_MASK // 126 ~
  4216. #define ASCII_7F KEY_BACKSPACE // 127
  4217. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  4218. #define ISO_8859_1_A1 KEY_EQUAL + SHIFT_MASK // 161 ¡ Inverted Exclamation
  4219. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  4220. #define ISO_8859_1_A3 0 // 163 £ Pound Sign
  4221. #define ISO_8859_1_A4 0 // 164 ¤ Currency Sign
  4222. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  4223. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  4224. #define ISO_8859_1_A7 0 // 167 § SECTION SIGN
  4225. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  4226. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  4227. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  4228. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  4229. #define ISO_8859_1_AC KEY_TILDE + ALTGR_MASK // 172 ¬ NOT SIGN
  4230. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  4231. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  4232. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  4233. #define ISO_8859_1_B0 KEY_TILDE + SHIFT_MASK // 176 ° DEGREE SIGN
  4234. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  4235. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  4236. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  4237. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  4238. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  4239. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  4240. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  4241. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  4242. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  4243. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  4244. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  4245. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  4246. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  4247. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  4248. #define ISO_8859_1_BF KEY_EQUAL // 191 ¿ INVERTED QUESTION MARK
  4249. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  4250. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  4251. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  4252. #define ISO_8859_1_C3 0 // 195 Ã A TILDE
  4253. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  4254. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  4255. #define ISO_8859_1_C6 0 // 198 Æ AE
  4256. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  4257. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  4258. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  4259. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  4260. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  4261. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  4262. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  4263. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  4264. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  4265. #define ISO_8859_1_D0 0 // 208 Ð ETH
  4266. #define ISO_8859_1_D1 KEY_SEMICOLON + SHIFT_MASK // 209 Ñ N TILDE
  4267. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  4268. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  4269. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  4270. #define ISO_8859_1_D5 0 // 213 Õ O TILDE
  4271. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  4272. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  4273. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  4274. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  4275. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  4276. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  4277. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  4278. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  4279. #define ISO_8859_1_DE 0 // 222 Þ THORN
  4280. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  4281. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  4282. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  4283. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  4284. #define ISO_8859_1_E3 0 // 227 ã a TILDE
  4285. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  4286. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  4287. #define ISO_8859_1_E6 0 // 230 æ ae
  4288. #define ISO_8859_1_E7 0 // 231 ç c CEDILLA
  4289. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  4290. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  4291. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  4292. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  4293. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  4294. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  4295. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  4296. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  4297. #define ISO_8859_1_F0 0 // 240 ð ETH
  4298. #define ISO_8859_1_F1 KEY_SEMICOLON // 241 ñ n TILDE
  4299. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  4300. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  4301. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  4302. #define ISO_8859_1_F5 0 // 245 õ o TILDE
  4303. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  4304. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  4305. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  4306. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  4307. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  4308. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  4309. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  4310. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  4311. #define ISO_8859_1_FE 0 // 254 þ THORN
  4312. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  4313. #endif // LAYOUT_SPANISH_LATIN_AMERICA
  4314. #ifdef LAYOUT_IRISH
  4315. #define SHIFT_MASK 0x0040
  4316. #define ALTGR_MASK 0x0080
  4317. #define DEADKEYS_MASK 0x0300
  4318. #define GRAVE_ACCENT_BITS 0x0100
  4319. #define ACUTE_ACCENT_BITS 0x0200
  4320. #define KEYCODE_TYPE uint16_t
  4321. #define DEADKEY_ACUTE_ACCENT KEY_QUOTE + ALTGR_MASK
  4322. #define DEADKEY_GRAVE_ACCENT KEY_TILDE
  4323. #define KEY_NON_US_100 63
  4324. #define ASCII_20 KEY_SPACE // 32
  4325. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  4326. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  4327. #define ASCII_23 KEY_BACKSPACE // 35 #
  4328. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  4329. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  4330. #define ASCII_26 KEY_7 + SHIFT_MASK // 38 &
  4331. #define ASCII_27 KEY_QUOTE // 39 '
  4332. #define ASCII_28 KEY_9 + SHIFT_MASK // 40 (
  4333. #define ASCII_29 KEY_0 + SHIFT_MASK // 41 )
  4334. #define ASCII_2A KEY_8 + SHIFT_MASK // 42 *
  4335. #define ASCII_2B KEY_EQUAL + SHIFT_MASK // 43 +
  4336. #define ASCII_2C KEY_COMMA // 44 ,
  4337. #define ASCII_2D KEY_MINUS // 45 -
  4338. #define ASCII_2E KEY_PERIOD // 46 .
  4339. #define ASCII_2F KEY_SLASH // 47 /
  4340. #define ASCII_30 KEY_0 // 48 0
  4341. #define ASCII_31 KEY_1 // 49 1
  4342. #define ASCII_32 KEY_2 // 50 2
  4343. #define ASCII_33 KEY_3 // 51 3
  4344. #define ASCII_34 KEY_4 // 52 4
  4345. #define ASCII_35 KEY_5 // 53 5
  4346. #define ASCII_36 KEY_6 // 54 6
  4347. #define ASCII_37 KEY_7 // 55 7
  4348. #define ASCII_38 KEY_8 // 55 8
  4349. #define ASCII_39 KEY_9 // 57 9
  4350. #define ASCII_3A KEY_SEMICOLON + SHIFT_MASK // 58 :
  4351. #define ASCII_3B KEY_SEMICOLON // 59 ;
  4352. #define ASCII_3C KEY_COMMA + SHIFT_MASK // 60 <
  4353. #define ASCII_3D KEY_EQUAL // 61 =
  4354. #define ASCII_3E KEY_PERIOD + SHIFT_MASK // 62 >
  4355. #define ASCII_3F KEY_SLASH + SHIFT_MASK // 63 ?
  4356. #define ASCII_40 KEY_QUOTE + SHIFT_MASK // 64 @
  4357. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  4358. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  4359. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  4360. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  4361. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  4362. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  4363. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  4364. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  4365. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  4366. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  4367. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  4368. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  4369. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  4370. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  4371. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  4372. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  4373. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  4374. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  4375. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  4376. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  4377. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  4378. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  4379. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  4380. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  4381. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  4382. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  4383. #define ASCII_5B KEY_LEFT_BRACE // 91 [
  4384. #define ASCII_5C KEY_NON_US_100 // 92
  4385. #define ASCII_5D KEY_RIGHT_BRACE // 93 ]
  4386. #define ASCII_5E KEY_6 + SHIFT_MASK // 94 ^
  4387. #define ASCII_5F KEY_MINUS + SHIFT_MASK // 95 _
  4388. #define ASCII_60 KEY_QUOTE + SHIFT_MASK + ALTGR_MASK // 96 `
  4389. #define ASCII_61 KEY_A // 97 a
  4390. #define ASCII_62 KEY_B // 98 b
  4391. #define ASCII_63 KEY_C // 99 c
  4392. #define ASCII_64 KEY_D // 100 d
  4393. #define ASCII_65 KEY_E // 101 e
  4394. #define ASCII_66 KEY_F // 102 f
  4395. #define ASCII_67 KEY_G // 103 g
  4396. #define ASCII_68 KEY_H // 104 h
  4397. #define ASCII_69 KEY_I // 105 i
  4398. #define ASCII_6A KEY_J // 106 j
  4399. #define ASCII_6B KEY_K // 107 k
  4400. #define ASCII_6C KEY_L // 108 l
  4401. #define ASCII_6D KEY_M // 109 m
  4402. #define ASCII_6E KEY_N // 110 n
  4403. #define ASCII_6F KEY_O // 111 o
  4404. #define ASCII_70 KEY_P // 112 p
  4405. #define ASCII_71 KEY_Q // 113 q
  4406. #define ASCII_72 KEY_R // 114 r
  4407. #define ASCII_73 KEY_S // 115 s
  4408. #define ASCII_74 KEY_T // 116 t
  4409. #define ASCII_75 KEY_U // 117 u
  4410. #define ASCII_76 KEY_V // 118 v
  4411. #define ASCII_77 KEY_W // 119 w
  4412. #define ASCII_78 KEY_X // 120 x
  4413. #define ASCII_79 KEY_Y // 121 y
  4414. #define ASCII_7A KEY_Z // 122 z
  4415. #define ASCII_7B KEY_LEFT_BRACE + SHIFT_MASK // 123 {
  4416. #define ASCII_7C KEY_NON_US_100 + SHIFT_MASK // 124 |
  4417. #define ASCII_7D KEY_RIGHT_BRACE + SHIFT_MASK // 125 }
  4418. #define ASCII_7E KEY_BACKSLASH + SHIFT_MASK // 126 ~
  4419. #define ASCII_7F KEY_BACKSPACE // 127
  4420. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  4421. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  4422. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  4423. #define ISO_8859_1_A3 KEY_3 + SHIFT_MASK // 163 £ Pound Sign
  4424. #define ISO_8859_1_A4 0 // 164 ¤ Currency or Euro Sign
  4425. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  4426. #define ISO_8859_1_A6 KEY_TILDE + ALTGR_MASK // 166 ¦ BROKEN BAR
  4427. #define ISO_8859_1_A7 0 // 167 § SECTION SIGN
  4428. #define ISO_8859_1_A8 0 // 168 ¨ DIAERESIS
  4429. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  4430. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  4431. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  4432. #define ISO_8859_1_AC KEY_TILDE + SHIFT_MASK // 172 ¬ NOT SIGN
  4433. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  4434. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  4435. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  4436. #define ISO_8859_1_B0 0 // 176 ° DEGREE SIGN
  4437. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  4438. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  4439. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  4440. #define ISO_8859_1_B4 0 // 180 ´ ACUTE ACCENT
  4441. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  4442. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  4443. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  4444. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  4445. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  4446. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  4447. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  4448. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  4449. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  4450. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  4451. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  4452. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A // 192 À A GRAVE
  4453. #define ISO_8859_1_C1 KEY_A + ALTGR_MASK + SHIFT_MASK // 193 Á A ACUTE
  4454. #define ISO_8859_1_C2 0 // 194 Â A CIRCUMFLEX
  4455. #define ISO_8859_1_C3 0 // 195 Ã A TILDE
  4456. #define ISO_8859_1_C4 0 // 196 Ä A DIAERESIS
  4457. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  4458. #define ISO_8859_1_C6 0 // 198 Æ AE
  4459. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  4460. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E // 200 È E GRAVE
  4461. #define ISO_8859_1_C9 KEY_E + ALTGR_MASK + SHIFT_MASK // 201 É E ACUTE
  4462. #define ISO_8859_1_CA 0 // 202 Ê E CIRCUMFLEX
  4463. #define ISO_8859_1_CB 0 // 203 Ë E DIAERESIS
  4464. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I // 204 Ì I GRAVE
  4465. #define ISO_8859_1_CD KEY_I + ALTGR_MASK + SHIFT_MASK // 205 Í I ACUTE
  4466. #define ISO_8859_1_CE 0 // 206 Î I CIRCUMFLEX
  4467. #define ISO_8859_1_CF 0 // 207 Ï I DIAERESIS
  4468. #define ISO_8859_1_D0 0 // 208 Ð ETH
  4469. #define ISO_8859_1_D1 0 // 209 Ñ N TILDE
  4470. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O // 210 Ò O GRAVE
  4471. #define ISO_8859_1_D3 KEY_O + ALTGR_MASK + SHIFT_MASK // 211 Ó O ACUTE
  4472. #define ISO_8859_1_D4 0 // 212 Ô O CIRCUMFLEX
  4473. #define ISO_8859_1_D5 0 // 213 Õ O TILDE
  4474. #define ISO_8859_1_D6 0 // 214 Ö O DIAERESIS
  4475. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  4476. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  4477. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U // 217 Ù U GRAVE
  4478. #define ISO_8859_1_DA KEY_U + ALTGR_MASK + SHIFT_MASK // 218 Ú U ACUTE
  4479. #define ISO_8859_1_DB 0 // 219 Û U CIRCUMFLEX
  4480. #define ISO_8859_1_DC 0 // 220 Ü U DIAERESIS
  4481. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  4482. #define ISO_8859_1_DE 0 // 222 Þ THORN
  4483. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  4484. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  4485. #define ISO_8859_1_E1 KEY_A + ALTGR_MASK // 225 á a ACUTE
  4486. #define ISO_8859_1_E2 0 // 226 â a CIRCUMFLEX
  4487. #define ISO_8859_1_E3 0 // 227 ã a TILDE
  4488. #define ISO_8859_1_E4 0 // 228 ä a DIAERESIS
  4489. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  4490. #define ISO_8859_1_E6 0 // 230 æ ae
  4491. #define ISO_8859_1_E7 0 // 231 ç c CEDILLA
  4492. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  4493. #define ISO_8859_1_E9 KEY_E + ALTGR_MASK // 233 é e ACUTE
  4494. #define ISO_8859_1_EA 0 // 234 ê e CIRCUMFLEX
  4495. #define ISO_8859_1_EB 0 // 235 ë e DIAERESIS
  4496. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  4497. #define ISO_8859_1_ED KEY_I + ALTGR_MASK // 237 í i ACUTE
  4498. #define ISO_8859_1_EE 0 // 238 î i CIRCUMFLEX
  4499. #define ISO_8859_1_EF 0 // 239 ï i DIAERESIS
  4500. #define ISO_8859_1_F0 0 // 240 ð ETH
  4501. #define ISO_8859_1_F1 0 // 241 ñ n TILDE
  4502. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  4503. #define ISO_8859_1_F3 KEY_O + ALTGR_MASK // 243 ó o ACUTE
  4504. #define ISO_8859_1_F4 0 // 244 ô o CIRCUMFLEX
  4505. #define ISO_8859_1_F5 0 // 245 õ o TILDE
  4506. #define ISO_8859_1_F6 0 // 246 ö o DIAERESIS
  4507. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  4508. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  4509. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  4510. #define ISO_8859_1_FA KEY_U + ALTGR_MASK // 250 ú u ACUTE
  4511. #define ISO_8859_1_FB 0 // 251 û u CIRCUMFLEX
  4512. #define ISO_8859_1_FC 0 // 252 ü u DIAERESIS
  4513. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  4514. #define ISO_8859_1_FE 0 // 254 þ THORN
  4515. #define ISO_8859_1_FF 0 // 255 ÿ y DIAERESIS
  4516. #define UNICODE_20AC KEY_4 + ALTGR_MASK // € Euro Sign
  4517. // not yet implemented
  4518. #define UNICODE_EXTRA00 0x20AC
  4519. #define KEYCODE_EXTRA00 KEY_4 + ALTGR_MASK // 20AC € Euro Sign
  4520. #endif // LAYOUT_IRISH
  4521. #ifdef LAYOUT_ICELANDIC
  4522. #define SHIFT_MASK 0x0040
  4523. #define ALTGR_MASK 0x0080
  4524. #define DEADKEYS_MASK 0x0700
  4525. #define CIRCUMFLEX_BITS 0x0100
  4526. #define ACUTE_ACCENT_BITS 0x0200
  4527. #define GRAVE_ACCENT_BITS 0x0300
  4528. #define DIAERESIS_BITS 0x0400
  4529. #define RING_ABOVE_BITS 0x0500
  4530. #define KEYCODE_TYPE uint16_t
  4531. #define DEADKEY_CIRCUMFLEX KEY_QUOTE + ALTGR_MASK
  4532. #define DEADKEY_ACUTE_ACCENT KEY_QUOTE
  4533. #define DEADKEY_GRAVE_ACCENT KEY_BACKSLASH + ALTGR_MASK
  4534. #define DEADKEY_DIAERESIS KEY_TILDE + SHIFT_MASK
  4535. #define DEADKEY_RING_ABOVE KEY_TILDE
  4536. #define KEY_NON_US_100 63
  4537. #define ASCII_20 KEY_SPACE // 32
  4538. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  4539. #define ASCII_22 KEY_2 + SHIFT_MASK // 34 "
  4540. #define ASCII_23 KEY_3 + SHIFT_MASK // 35 #
  4541. #define ASCII_24 KEY_4 + SHIFT_MASK // 36 $
  4542. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  4543. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  4544. #define ASCII_27 KEY_QUOTE + SHIFT_MASK // 39 '
  4545. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  4546. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  4547. #define ASCII_2A KEY_BACKSLASH + SHIFT_MASK // 42 *
  4548. #define ASCII_2B KEY_BACKSLASH // 43 +
  4549. #define ASCII_2C KEY_COMMA // 44 ,
  4550. #define ASCII_2D KEY_EQUAL // 45 -
  4551. #define ASCII_2E KEY_PERIOD // 46 .
  4552. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  4553. #define ASCII_30 KEY_0 // 48 0
  4554. #define ASCII_31 KEY_1 // 49 1
  4555. #define ASCII_32 KEY_2 // 50 2
  4556. #define ASCII_33 KEY_3 // 51 3
  4557. #define ASCII_34 KEY_4 // 52 4
  4558. #define ASCII_35 KEY_5 // 53 5
  4559. #define ASCII_36 KEY_6 // 54 6
  4560. #define ASCII_37 KEY_7 // 55 7
  4561. #define ASCII_38 KEY_8 // 55 8
  4562. #define ASCII_39 KEY_9 // 57 9
  4563. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  4564. #define ASCII_3B KEY_COMMA + SHIFT_MASK // 59 ;
  4565. #define ASCII_3C KEY_NON_US_100 // 60 <
  4566. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  4567. #define ASCII_3E KEY_NON_US_100 + SHIFT_MASK // 62 >
  4568. #define ASCII_3F KEY_RIGHT_BRACE + SHIFT_MASK // 63 ?
  4569. #define ASCII_40 KEY_Q + ALTGR_MASK // 64 @
  4570. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  4571. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  4572. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  4573. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  4574. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  4575. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  4576. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  4577. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  4578. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  4579. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  4580. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  4581. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  4582. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  4583. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  4584. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  4585. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  4586. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  4587. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  4588. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  4589. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  4590. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  4591. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  4592. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  4593. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  4594. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  4595. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  4596. #define ASCII_5B KEY_8 + ALTGR_MASK // 91 [
  4597. #define ASCII_5C KEY_MINUS + ALTGR_MASK // 92
  4598. #define ASCII_5D KEY_9 + ALTGR_MASK // 93 ]
  4599. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  4600. #define ASCII_5F KEY_EQUAL + SHIFT_MASK // 95 _
  4601. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  4602. #define ASCII_61 KEY_A // 97 a
  4603. #define ASCII_62 KEY_B // 98 b
  4604. #define ASCII_63 KEY_C // 99 c
  4605. #define ASCII_64 KEY_D // 100 d
  4606. #define ASCII_65 KEY_E // 101 e
  4607. #define ASCII_66 KEY_F // 102 f
  4608. #define ASCII_67 KEY_G // 103 g
  4609. #define ASCII_68 KEY_H // 104 h
  4610. #define ASCII_69 KEY_I // 105 i
  4611. #define ASCII_6A KEY_J // 106 j
  4612. #define ASCII_6B KEY_K // 107 k
  4613. #define ASCII_6C KEY_L // 108 l
  4614. #define ASCII_6D KEY_M // 109 m
  4615. #define ASCII_6E KEY_N // 110 n
  4616. #define ASCII_6F KEY_O // 111 o
  4617. #define ASCII_70 KEY_P // 112 p
  4618. #define ASCII_71 KEY_Q // 113 q
  4619. #define ASCII_72 KEY_R // 114 r
  4620. #define ASCII_73 KEY_S // 115 s
  4621. #define ASCII_74 KEY_T // 116 t
  4622. #define ASCII_75 KEY_U // 117 u
  4623. #define ASCII_76 KEY_V // 118 v
  4624. #define ASCII_77 KEY_W // 119 w
  4625. #define ASCII_78 KEY_X // 120 x
  4626. #define ASCII_79 KEY_Y // 121 y
  4627. #define ASCII_7A KEY_Z // 122 z
  4628. #define ASCII_7B KEY_7 + ALTGR_MASK // 123 {
  4629. #define ASCII_7C KEY_NON_US_100 + ALTGR_MASK // 124 |
  4630. #define ASCII_7D KEY_0 + ALTGR_MASK // 125 }
  4631. #define ASCII_7E KEY_RIGHT_BRACE + ALTGR_MASK // 126 ~
  4632. #define ASCII_7F KEY_BACKSPACE // 127
  4633. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  4634. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  4635. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  4636. #define ISO_8859_1_A3 0 // 163 £ Pound Sign
  4637. #define ISO_8859_1_A4 0 // 164 ¤ Currency or Euro Sign
  4638. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  4639. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR ??
  4640. #define ISO_8859_1_A7 0 // 167 § SECTION SIGN
  4641. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  4642. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  4643. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  4644. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  4645. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN ??
  4646. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  4647. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  4648. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  4649. #define ISO_8859_1_B0 KEY_TILDE + ALTGR_MASK // 176 ° DEGREE SIGN
  4650. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  4651. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  4652. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  4653. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  4654. #define ISO_8859_1_B5 KEY_M + ALTGR_MASK // 181 µ MICRO SIGN
  4655. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  4656. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  4657. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  4658. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  4659. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  4660. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  4661. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  4662. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  4663. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  4664. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  4665. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  4666. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + ALTGR_MASK // 193 Á A ACUTE
  4667. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  4668. #define ISO_8859_1_C3 0 // 195 Ã A TILDE
  4669. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  4670. #define ISO_8859_1_C5 RING_ABOVE_BITS + KEY_A + SHIFT_MASK // 197 Å A RING ABOVE
  4671. #define ISO_8859_1_C6 KEY_SEMICOLON + SHIFT_MASK // 198 Æ AE
  4672. #define ISO_8859_1_C7 0 // 199 Ç C CEDILLA
  4673. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  4674. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  4675. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  4676. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  4677. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  4678. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  4679. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  4680. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  4681. #define ISO_8859_1_D0 KEY_LEFT_BRACE + SHIFT_MASK // 208 Ð ETH
  4682. #define ISO_8859_1_D1 0 // 209 Ñ N TILDE
  4683. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  4684. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  4685. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  4686. #define ISO_8859_1_D5 0 // 213 Õ O TILDE
  4687. #define ISO_8859_1_D6 DIAERESIS_BITS + KEY_O + SHIFT_MASK // 214 Ö O DIAERESIS
  4688. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  4689. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  4690. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  4691. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  4692. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  4693. #define ISO_8859_1_DC DIAERESIS_BITS + KEY_U + SHIFT_MASK // 220 Ü U DIAERESIS
  4694. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  4695. #define ISO_8859_1_DE KEY_SLASH + SHIFT_MASK // 222 Þ THORN
  4696. #define ISO_8859_1_DF 0 // 223 ß SHARP S
  4697. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  4698. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  4699. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  4700. #define ISO_8859_1_E3 0 // 227 ã a TILDE
  4701. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  4702. #define ISO_8859_1_E5 RING_ABOVE_BITS + KEY_A // 229 å a RING ABOVE
  4703. #define ISO_8859_1_E6 KEY_SEMICOLON // 230 æ ae
  4704. #define ISO_8859_1_E7 0 // 231 ç c CEDILLA
  4705. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  4706. #define ISO_8859_1_E9 ACUTE_ACCENT_BITS + KEY_E // 233 é e ACUTE
  4707. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  4708. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  4709. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  4710. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  4711. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  4712. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  4713. #define ISO_8859_1_F0 KEY_LEFT_BRACE // 240 ð ETH
  4714. #define ISO_8859_1_F1 0 // 241 ñ n TILDE
  4715. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  4716. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  4717. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  4718. #define ISO_8859_1_F5 0 // 245 õ o TILDE
  4719. #define ISO_8859_1_F6 DIAERESIS_BITS + KEY_O // 246 ö o DIAERESIS
  4720. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  4721. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  4722. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  4723. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  4724. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  4725. #define ISO_8859_1_FC DIAERESIS_BITS + KEY_U // 252 ü u DIAERESIS
  4726. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  4727. #define ISO_8859_1_FE KEY_SLASH // 254 þ THORN
  4728. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  4729. #define UNICODE_20AC KEY_5 + ALTGR_MASK // € Euro Sign
  4730. // not yet implemented
  4731. #define UNICODE_EXTRA00 0x20AC
  4732. #define KEYCODE_EXTRA00 KEY_5 + ALTGR_MASK // 20AC € Euro Sign
  4733. #endif // LAYOUT_ICELANDIC
  4734. #ifdef LAYOUT_TURKISH
  4735. // http://forum.pjrc.com/threads/18781-Turkish-Language-Support
  4736. #define SHIFT_MASK 0x0040
  4737. #define ALTGR_MASK 0x0080
  4738. #define DEADKEYS_MASK 0x0700
  4739. #define CIRCUMFLEX_BITS 0x0100
  4740. #define ACUTE_ACCENT_BITS 0x0200
  4741. #define GRAVE_ACCENT_BITS 0x0300
  4742. #define TILDE_BITS 0x0400
  4743. #define DIAERESIS_BITS 0x0500
  4744. #define KEYCODE_TYPE uint16_t
  4745. #define DEADKEY_CIRCUMFLEX KEY_3 + SHIFT_MASK
  4746. #define DEADKEY_ACUTE_ACCENT KEY_SEMICOLON + ALTGR_MASK
  4747. #define DEADKEY_GRAVE_ACCENT KEY_BACKSLASH + ALTGR_MASK
  4748. #define DEADKEY_TILDE KEY_RIGHT_BRACE + ALTGR_MASK
  4749. #define DEADKEY_DIAERESIS KEY_LEFT_BRACE + ALTGR_MASK
  4750. #define ASCII_20 KEY_SPACE // 32
  4751. #define ASCII_21 KEY_1 + SHIFT_MASK // 33 !
  4752. #define ASCII_22 KEY_TILDE // 34 "
  4753. #define ASCII_23 KEY_3 + ALTGR_MASK // 35 #
  4754. #define ASCII_24 KEY_4 + ALTGR_MASK // 36 $
  4755. #define ASCII_25 KEY_5 + SHIFT_MASK // 37 %
  4756. #define ASCII_26 KEY_6 + SHIFT_MASK // 38 &
  4757. #define ASCII_27 KEY_2 + SHIFT_MASK // 39 '
  4758. #define ASCII_28 KEY_8 + SHIFT_MASK // 40 (
  4759. #define ASCII_29 KEY_9 + SHIFT_MASK // 41 )
  4760. #define ASCII_2A KEY_MINUS // 42 *
  4761. #define ASCII_2B KEY_4 + SHIFT_MASK // 43 +
  4762. #define ASCII_2C KEY_BACKSLASH // 44 ,
  4763. #define ASCII_2D KEY_EQUAL // 45 -
  4764. #define ASCII_2E KEY_SLASH // 46 .
  4765. #define ASCII_2F KEY_7 + SHIFT_MASK // 47 /
  4766. #define ASCII_30 KEY_0 // 48 0
  4767. #define ASCII_31 KEY_1 // 49 1
  4768. #define ASCII_32 KEY_2 // 50 2
  4769. #define ASCII_33 KEY_3 // 51 3
  4770. #define ASCII_34 KEY_4 // 52 4
  4771. #define ASCII_35 KEY_5 // 53 5
  4772. #define ASCII_36 KEY_6 // 54 6
  4773. #define ASCII_37 KEY_7 // 55 7
  4774. #define ASCII_38 KEY_8 // 55 8
  4775. #define ASCII_39 KEY_9 // 57 9
  4776. #define ASCII_3A KEY_SLASH + SHIFT_MASK // 58 :
  4777. #define ASCII_3B KEY_BACKSLASH + SHIFT_MASK // 59 ;
  4778. #define ASCII_3C KEY_TILDE + ALTGR_MASK // 60 <
  4779. #define ASCII_3D KEY_0 + SHIFT_MASK // 61 =
  4780. #define ASCII_3E KEY_1 + ALTGR_MASK // 62 >
  4781. #define ASCII_3F KEY_MINUS + SHIFT_MASK // 63 ?
  4782. #define ASCII_40 KEY_Q + ALTGR_MASK // 64 @
  4783. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  4784. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  4785. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  4786. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  4787. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  4788. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  4789. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  4790. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  4791. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  4792. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  4793. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  4794. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  4795. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  4796. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  4797. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  4798. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  4799. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  4800. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  4801. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  4802. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  4803. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  4804. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  4805. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  4806. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  4807. #define ASCII_59 KEY_Y + SHIFT_MASK // 89 Y
  4808. #define ASCII_5A KEY_Z + SHIFT_MASK // 90 Z
  4809. #define ASCII_5B KEY_8 + ALTGR_MASK // 91 [
  4810. #define ASCII_5C KEY_MINUS + ALTGR_MASK // 92
  4811. #define ASCII_5D KEY_9 + ALTGR_MASK // 93 ]
  4812. #define ASCII_5E CIRCUMFLEX_BITS + KEY_SPACE // 94 ^
  4813. #define ASCII_5F KEY_EQUAL + SHIFT_MASK // 95 _
  4814. #define ASCII_60 GRAVE_ACCENT_BITS + KEY_SPACE // 96 `
  4815. #define ASCII_61 KEY_A // 97 a
  4816. #define ASCII_62 KEY_B // 98 b
  4817. #define ASCII_63 KEY_C // 99 c
  4818. #define ASCII_64 KEY_D // 100 d
  4819. #define ASCII_65 KEY_E // 101 e
  4820. #define ASCII_66 KEY_F // 102 f
  4821. #define ASCII_67 KEY_G // 103 g
  4822. #define ASCII_68 KEY_H // 104 h
  4823. #define ASCII_69 KEY_QUOTE // 105 i
  4824. #define ASCII_6A KEY_J // 106 j
  4825. #define ASCII_6B KEY_K // 107 k
  4826. #define ASCII_6C KEY_L // 108 l
  4827. #define ASCII_6D KEY_M // 109 m
  4828. #define ASCII_6E KEY_N // 110 n
  4829. #define ASCII_6F KEY_O // 111 o
  4830. #define ASCII_70 KEY_P // 112 p
  4831. #define ASCII_71 KEY_Q // 113 q
  4832. #define ASCII_72 KEY_R // 114 r
  4833. #define ASCII_73 KEY_S // 115 s
  4834. #define ASCII_74 KEY_T // 116 t
  4835. #define ASCII_75 KEY_U // 117 u
  4836. #define ASCII_76 KEY_V // 118 v
  4837. #define ASCII_77 KEY_W // 119 w
  4838. #define ASCII_78 KEY_X // 120 x
  4839. #define ASCII_79 KEY_Y // 121 y
  4840. #define ASCII_7A KEY_Z // 122 z
  4841. #define ASCII_7B KEY_7 + ALTGR_MASK // 123 {
  4842. #define ASCII_7C KEY_EQUAL + ALTGR_MASK // 124 |
  4843. #define ASCII_7D KEY_0 + ALTGR_MASK // 125 }
  4844. #define ASCII_7E TILDE_BITS + KEY_SPACE // 126 ~
  4845. #define ASCII_7F KEY_BACKSPACE // 127
  4846. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  4847. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  4848. #define ISO_8859_1_A2 0 // 162 ¢ Cent SIGN
  4849. #define ISO_8859_1_A3 KEY_2 + ALTGR_MASK // 163 £ Pound Sign
  4850. #define ISO_8859_1_A4 0 // 164 ¤ Currency or Euro Sign
  4851. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  4852. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR ??
  4853. #define ISO_8859_1_A7 0 // 167 § SECTION SIGN
  4854. #define ISO_8859_1_A8 DIAERESIS_BITS + KEY_SPACE // 168 ¨ DIAERESIS
  4855. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  4856. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  4857. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  4858. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN ??
  4859. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  4860. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  4861. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  4862. #define ISO_8859_1_B0 0 // 176 ° DEGREE SIGN
  4863. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  4864. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  4865. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  4866. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  4867. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  4868. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  4869. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  4870. #define ISO_8859_1_B8 0 // 184 ¸ CEDILLA
  4871. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  4872. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  4873. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  4874. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  4875. #define ISO_8859_1_BD KEY_5 + ALTGR_MASK // 189 ½ FRACTION ONE HALF
  4876. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  4877. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  4878. #define ISO_8859_1_C0 GRAVE_ACCENT_BITS + KEY_A + SHIFT_MASK // 192 À A GRAVE
  4879. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  4880. #define ISO_8859_1_C2 CIRCUMFLEX_BITS + KEY_A + SHIFT_MASK // 194 Â A CIRCUMFLEX
  4881. #define ISO_8859_1_C3 TILDE_BITS + KEY_A + SHIFT_MASK // 195 Ã A TILDE
  4882. #define ISO_8859_1_C4 DIAERESIS_BITS + KEY_A + SHIFT_MASK // 196 Ä A DIAERESIS
  4883. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  4884. #define ISO_8859_1_C6 KEY_A + ALTGR_MASK // 198 Æ AE
  4885. #define ISO_8859_1_C7 KEY_PERIOD + SHIFT_MASK // 199 Ç C CEDILLA
  4886. #define ISO_8859_1_C8 GRAVE_ACCENT_BITS + KEY_E + SHIFT_MASK // 200 È E GRAVE
  4887. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  4888. #define ISO_8859_1_CA CIRCUMFLEX_BITS + KEY_E + SHIFT_MASK // 202 Ê E CIRCUMFLEX
  4889. #define ISO_8859_1_CB DIAERESIS_BITS + KEY_E + SHIFT_MASK // 203 Ë E DIAERESIS
  4890. #define ISO_8859_1_CC GRAVE_ACCENT_BITS + KEY_I + SHIFT_MASK // 204 Ì I GRAVE
  4891. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  4892. #define ISO_8859_1_CE CIRCUMFLEX_BITS + KEY_I + SHIFT_MASK // 206 Î I CIRCUMFLEX
  4893. #define ISO_8859_1_CF DIAERESIS_BITS + KEY_I + SHIFT_MASK // 207 Ï I DIAERESIS
  4894. #define ISO_8859_1_D0 0 // 208 Ð ETH
  4895. #define ISO_8859_1_D1 TILDE_BITS + KEY_N + SHIFT_MASK // 209 Ñ N TILDE
  4896. #define ISO_8859_1_D2 GRAVE_ACCENT_BITS + KEY_O + SHIFT_MASK // 210 Ò O GRAVE
  4897. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  4898. #define ISO_8859_1_D4 CIRCUMFLEX_BITS + KEY_O + SHIFT_MASK // 212 Ô O CIRCUMFLEX
  4899. #define ISO_8859_1_D5 TILDE_BITS + KEY_O + SHIFT_MASK // 213 Õ O TILDE
  4900. #define ISO_8859_1_D6 KEY_COMMA + SHIFT_MASK // 214 Ö O DIAERESIS
  4901. #define ISO_8859_1_D7 0 // 215 × MULTIPLICATION
  4902. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  4903. #define ISO_8859_1_D9 GRAVE_ACCENT_BITS + KEY_U + SHIFT_MASK // 217 Ù U GRAVE
  4904. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  4905. #define ISO_8859_1_DB CIRCUMFLEX_BITS + KEY_U + SHIFT_MASK // 219 Û U CIRCUMFLEX
  4906. #define ISO_8859_1_DC KEY_RIGHT_BRACE + SHIFT_MASK // 220 Ü U DIAERESIS
  4907. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Y + SHIFT_MASK // 221 Ý Y ACUTE
  4908. #define ISO_8859_1_DE 0 // 222 Þ THORN
  4909. #define ISO_8859_1_DF KEY_S + ALTGR_MASK // 223 ß SHARP S
  4910. #define ISO_8859_1_E0 GRAVE_ACCENT_BITS + KEY_A // 224 à a GRAVE
  4911. #define ISO_8859_1_E1 ACUTE_ACCENT_BITS + KEY_A // 225 á a ACUTE
  4912. #define ISO_8859_1_E2 CIRCUMFLEX_BITS + KEY_A // 226 â a CIRCUMFLEX
  4913. #define ISO_8859_1_E3 TILDE_BITS + KEY_A // 227 ã a TILDE
  4914. #define ISO_8859_1_E4 DIAERESIS_BITS + KEY_A // 228 ä a DIAERESIS
  4915. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  4916. #define ISO_8859_1_E6 0 // 230 æ ae
  4917. #define ISO_8859_1_E7 KEY_PERIOD // 231 ç c CEDILLA
  4918. #define ISO_8859_1_E8 GRAVE_ACCENT_BITS + KEY_E // 232 è e GRAVE
  4919. #define ISO_8859_1_E9 KEY_TILDE + SHIFT_MASK // 233 é e ACUTE
  4920. #define ISO_8859_1_EA CIRCUMFLEX_BITS + KEY_E // 234 ê e CIRCUMFLEX
  4921. #define ISO_8859_1_EB DIAERESIS_BITS + KEY_E // 235 ë e DIAERESIS
  4922. #define ISO_8859_1_EC GRAVE_ACCENT_BITS + KEY_I // 236 ì i GRAVE
  4923. #define ISO_8859_1_ED ACUTE_ACCENT_BITS + KEY_I // 237 í i ACUTE
  4924. #define ISO_8859_1_EE CIRCUMFLEX_BITS + KEY_I // 238 î i CIRCUMFLEX
  4925. #define ISO_8859_1_EF DIAERESIS_BITS + KEY_I // 239 ï i DIAERESIS
  4926. #define ISO_8859_1_F0 0 // 240 ð ETH
  4927. #define ISO_8859_1_F1 TILDE_BITS + KEY_N // 241 ñ n TILDE
  4928. #define ISO_8859_1_F2 GRAVE_ACCENT_BITS + KEY_O // 242 ò o GRAVE
  4929. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  4930. #define ISO_8859_1_F4 CIRCUMFLEX_BITS + KEY_O // 244 ô o CIRCUMFLEX
  4931. #define ISO_8859_1_F5 TILDE_BITS + KEY_O // 245 õ o TILDE
  4932. #define ISO_8859_1_F6 KEY_COMMA // 246 ö o DIAERESIS
  4933. #define ISO_8859_1_F7 0 // 247 ÷ DIVISION
  4934. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  4935. #define ISO_8859_1_F9 GRAVE_ACCENT_BITS + KEY_U // 249 ù u GRAVE
  4936. #define ISO_8859_1_FA ACUTE_ACCENT_BITS + KEY_U // 250 ú u ACUTE
  4937. #define ISO_8859_1_FB CIRCUMFLEX_BITS + KEY_U // 251 û u CIRCUMFLEX
  4938. #define ISO_8859_1_FC KEY_RIGHT_BRACE // 252 ü u DIAERESIS
  4939. #define ISO_8859_1_FD ACUTE_ACCENT_BITS + KEY_Y // 253 ý y ACUTE
  4940. #define ISO_8859_1_FE 0 // 254 þ THORN
  4941. #define ISO_8859_1_FF DIAERESIS_BITS + KEY_Y // 255 ÿ y DIAERESIS
  4942. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  4943. // not yet implemented
  4944. #define UNICODE_EXTRA00 0x20AC
  4945. #define KEYCODE_EXTRA00 KEY_E + ALTGR_MASK // 20AC € Euro Sign
  4946. #define UNICODE_EXTRA01 0x011E
  4947. #define KEYCODE_EXTRA01 KEY_LEFT_BRACE + SHIFT_MASK // 011E Ğ Latin capital letter G with breve
  4948. #define UNICODE_EXTRA02 0x011F
  4949. #define KEYCODE_EXTRA02 KEY_LEFT_BRACE // 011F ğ Latin small letter g with breve
  4950. #define UNICODE_EXTRA03 0x0130
  4951. #define KEYCODE_EXTRA03 KEY_QUOTE + SHIFT_MASK // 0130 İ Latin captial letter I with dot above
  4952. #define UNICODE_EXTRA04 0x0131
  4953. #define KEYCODE_EXTRA04 KEY_I // 0131 ı Latin small letter dotless i
  4954. #define UNICODE_EXTRA05 0x015E
  4955. #define KEYCODE_EXTRA05 KEY_SEMICOLON + SHIFT_MASK // 015E Ş Latin capital letter S with cedilla
  4956. #define UNICODE_EXTRA06 0x0151
  4957. #define KEYCODE_EXTRA06 KEY_SEMICOLON // 0151 ş Latin small letter s with cedilla
  4958. #endif // LAYOUT_TURKISH
  4959. #ifdef LAYOUT_CZECH
  4960. // http://forum.pjrc.com/threads/24495-Czech-keyboard
  4961. #define SHIFT_MASK 0x0040
  4962. #define ALTGR_MASK 0x0080
  4963. #define DEADKEYS_MASK 0x0F00
  4964. #define ACUTE_ACCENT_BITS 0x0100 // TODO: the Czech might not support some
  4965. #define DEGREE_SIGN_BITS 0x0200 // of these deadkeys, perhaps not any???
  4966. #define CARON_BITS 0x0300
  4967. //#define CIRCUMFLEX_BITS 0x0400
  4968. #define BREVE_BITS 0x0500
  4969. #define OGONEK_BITS 0x0600
  4970. //#define GRAVE_ACCENT_BITS 0x0700
  4971. #define DOT_ABOVE_BITS 0x0800
  4972. #define DOUBLE_ACUTE_BITS 0x0900
  4973. //#define DIAERESIS_BITS 0x0A00
  4974. #define CEDILLA_BITS 0x0B00
  4975. #define KEYCODE_TYPE uint16_t
  4976. #define DEADKEY_ACUTE_ACCENT KEY_EQUAL // TODO: is it KEY_9 + ALTGR_MASK
  4977. #define DEADKEY_DEGREE_SIGN KEY_TILDE + SHIFT_MASK // TODO: is it KEY_5 + ALTGR_MASK
  4978. #define DEADKEY_CARON KEY_EQUAL + SHIFT_MASK // TODO: is it KEY_2 + ALTGR_MASK
  4979. //#define DEADKEY_CIRCUMFLEX KEY_3 + ALTGR_MASK
  4980. #define DEADKEY_BREVE KEY_4 + ALTGR_MASK
  4981. #define DEADKEY_OGONEK KEY_6 + ALTGR_MASK
  4982. //#define DEADKEY_GRAVE_ACCENT KEY_7 + ALTGR_MASK
  4983. #define DEADKEY_DOT_ABOVE KEY_8 + ALTGR_MASK
  4984. #define DEADKEY_DOUBLE_ACUTE KEY_0 + ALTGR_MASK
  4985. #define DEADKEY_DIAERESIS KEY_MINUS + ALTGR_MASK
  4986. #define DEADKEY_CEDILLA KEY_EQUAL + ALTGR_MASK
  4987. #define KEY_NON_US_100 63
  4988. #define ASCII_20 KEY_SPACE // 32
  4989. #define ASCII_21 KEY_QUOTE + SHIFT_MASK // 33 !
  4990. #define ASCII_22 KEY_SEMICOLON + SHIFT_MASK // 34 "
  4991. #define ASCII_23 KEY_X + ALTGR_MASK // 35 #
  4992. #define ASCII_24 KEY_SEMICOLON + ALTGR_MASK // 36 $
  4993. #define ASCII_25 KEY_MINUS + SHIFT_MASK // 37 %
  4994. #define ASCII_26 KEY_C + ALTGR_MASK // 38 &
  4995. #define ASCII_27 KEY_BACKSLASH + SHIFT_MASK // 39 '
  4996. #define ASCII_28 KEY_RIGHT_BRACE + SHIFT_MASK // 40 (
  4997. #define ASCII_29 KEY_RIGHT_BRACE // 41 )
  4998. #define ASCII_2A KEY_SLASH + ALTGR_MASK // 42 *
  4999. #define ASCII_2B KEY_1 // 43 +
  5000. #define ASCII_2C KEY_COMMA // 44 ,
  5001. #define ASCII_2D KEY_SLASH // 45 -
  5002. #define ASCII_2E KEY_PERIOD // 46 .
  5003. #define ASCII_2F KEY_LEFT_BRACE + SHIFT_MASK // 47 /
  5004. #define ASCII_30 KEY_0 + SHIFT_MASK // 48 0
  5005. #define ASCII_31 KEY_1 + SHIFT_MASK // 49 1
  5006. #define ASCII_32 KEY_2 + SHIFT_MASK // 50 2
  5007. #define ASCII_33 KEY_3 + SHIFT_MASK // 51 3
  5008. #define ASCII_34 KEY_4 + SHIFT_MASK // 52 4
  5009. #define ASCII_35 KEY_5 + SHIFT_MASK // 53 5
  5010. #define ASCII_36 KEY_6 + SHIFT_MASK // 54 6
  5011. #define ASCII_37 KEY_7 + SHIFT_MASK // 55 7
  5012. #define ASCII_38 KEY_8 + SHIFT_MASK // 55 8
  5013. #define ASCII_39 KEY_9 + SHIFT_MASK // 57 9
  5014. #define ASCII_3A KEY_PERIOD + SHIFT_MASK // 58 :
  5015. #define ASCII_3B KEY_TILDE // 59 ;
  5016. #define ASCII_3C KEY_COMMA + ALTGR_MASK // 60 <
  5017. #define ASCII_3D KEY_MINUS // 61 =
  5018. #define ASCII_3E KEY_PERIOD + ALTGR_MASK // 62 >
  5019. #define ASCII_3F KEY_COMMA + SHIFT_MASK // 63 ?
  5020. #define ASCII_40 KEY_V + ALTGR_MASK // 64 @
  5021. #define ASCII_41 KEY_A + SHIFT_MASK // 65 A
  5022. #define ASCII_42 KEY_B + SHIFT_MASK // 66 B
  5023. #define ASCII_43 KEY_C + SHIFT_MASK // 67 C
  5024. #define ASCII_44 KEY_D + SHIFT_MASK // 68 D
  5025. #define ASCII_45 KEY_E + SHIFT_MASK // 69 E
  5026. #define ASCII_46 KEY_F + SHIFT_MASK // 70 F
  5027. #define ASCII_47 KEY_G + SHIFT_MASK // 71 G
  5028. #define ASCII_48 KEY_H + SHIFT_MASK // 72 H
  5029. #define ASCII_49 KEY_I + SHIFT_MASK // 73 I
  5030. #define ASCII_4A KEY_J + SHIFT_MASK // 74 J
  5031. #define ASCII_4B KEY_K + SHIFT_MASK // 75 K
  5032. #define ASCII_4C KEY_L + SHIFT_MASK // 76 L
  5033. #define ASCII_4D KEY_M + SHIFT_MASK // 77 M
  5034. #define ASCII_4E KEY_N + SHIFT_MASK // 78 N
  5035. #define ASCII_4F KEY_O + SHIFT_MASK // 79 O
  5036. #define ASCII_50 KEY_P + SHIFT_MASK // 80 P
  5037. #define ASCII_51 KEY_Q + SHIFT_MASK // 81 Q
  5038. #define ASCII_52 KEY_R + SHIFT_MASK // 82 R
  5039. #define ASCII_53 KEY_S + SHIFT_MASK // 83 S
  5040. #define ASCII_54 KEY_T + SHIFT_MASK // 84 T
  5041. #define ASCII_55 KEY_U + SHIFT_MASK // 85 U
  5042. #define ASCII_56 KEY_V + SHIFT_MASK // 86 V
  5043. #define ASCII_57 KEY_W + SHIFT_MASK // 87 W
  5044. #define ASCII_58 KEY_X + SHIFT_MASK // 88 X
  5045. #define ASCII_59 KEY_Z + SHIFT_MASK // 89 Y
  5046. #define ASCII_5A KEY_Y + SHIFT_MASK // 90 Z
  5047. #define ASCII_5B KEY_F + ALTGR_MASK // 91 [
  5048. #define ASCII_5C KEY_NON_US_100 // 92
  5049. #define ASCII_5D KEY_G + ALTGR_MASK // 93 ]
  5050. #define ASCII_5E KEY_3 + ALTGR_MASK // 94 ^ TODO: testme
  5051. #define ASCII_5F KEY_SLASH + SHIFT_MASK // 95 _
  5052. #define ASCII_60 KEY_7 + ALTGR_MASK // 96 ` TODO: testme
  5053. #define ASCII_61 KEY_A // 97 a
  5054. #define ASCII_62 KEY_B // 98 b
  5055. #define ASCII_63 KEY_C // 99 c
  5056. #define ASCII_64 KEY_D // 100 d
  5057. #define ASCII_65 KEY_E // 101 e
  5058. #define ASCII_66 KEY_F // 102 f
  5059. #define ASCII_67 KEY_G // 103 g
  5060. #define ASCII_68 KEY_H // 104 h
  5061. #define ASCII_69 KEY_I // 105 i
  5062. #define ASCII_6A KEY_J // 106 j
  5063. #define ASCII_6B KEY_K // 107 k
  5064. #define ASCII_6C KEY_L // 108 l
  5065. #define ASCII_6D KEY_M // 109 m
  5066. #define ASCII_6E KEY_N // 110 n
  5067. #define ASCII_6F KEY_O // 111 o
  5068. #define ASCII_70 KEY_P // 112 p
  5069. #define ASCII_71 KEY_Q // 113 q
  5070. #define ASCII_72 KEY_R // 114 r
  5071. #define ASCII_73 KEY_S // 115 s
  5072. #define ASCII_74 KEY_T // 116 t
  5073. #define ASCII_75 KEY_U // 117 u
  5074. #define ASCII_76 KEY_V // 118 v
  5075. #define ASCII_77 KEY_W // 119 w
  5076. #define ASCII_78 KEY_X // 120 x
  5077. #define ASCII_79 KEY_Z // 121 y
  5078. #define ASCII_7A KEY_Y // 122 z
  5079. #define ASCII_7B KEY_B + ALTGR_MASK // 123 {
  5080. #define ASCII_7C KEY_NON_US_100 + SHIFT_MASK // 124 |
  5081. #define ASCII_7D KEY_N + ALTGR_MASK // 125 }
  5082. #define ASCII_7E KEY_1 + ALTGR_MASK // 126 ~ TODO: fixme
  5083. #define ASCII_7F KEY_BACKSPACE // 127
  5084. #define ISO_8859_1_A0 KEY_SPACE // 160 Nonbreakng Space
  5085. #define ISO_8859_1_A1 0 // 161 ¡ Inverted Exclamation
  5086. #define ISO_8859_1_A2 0 // 162 ¢ Cent Sign
  5087. #define ISO_8859_1_A3 0 // 163 £ Pound Sign
  5088. #define ISO_8859_1_A4 KEY_BACKSLASH + ALTGR_MASK // 164 ¤ Currency Sign
  5089. #define ISO_8859_1_A5 0 // 165 ¥ YEN SIGN
  5090. #define ISO_8859_1_A6 0 // 166 ¦ BROKEN BAR
  5091. #define ISO_8859_1_A7 KEY_QUOTE // 167 § SECTION SIGN
  5092. #define ISO_8859_1_A8 0 // 168 ¨ DIAERESIS
  5093. #define ISO_8859_1_A9 0 // 169 © COPYRIGHT SIGN
  5094. #define ISO_8859_1_AA 0 // 170 ª FEMININE ORDINAL
  5095. #define ISO_8859_1_AB 0 // 171 « LEFT DOUBLE ANGLE QUOTE
  5096. #define ISO_8859_1_AC 0 // 172 ¬ NOT SIGN
  5097. #define ISO_8859_1_AD 0 // 173 SOFT HYPHEN
  5098. #define ISO_8859_1_AE 0 // 174 ® REGISTERED SIGN
  5099. #define ISO_8859_1_AF 0 // 175 ¯ MACRON
  5100. #define ISO_8859_1_B0 DEGREE_SIGN_BITS + KEY_SPACE // 176 ° DEGREE SIGN
  5101. #define ISO_8859_1_B1 0 // 177 ± PLUS-MINUS SIGN
  5102. #define ISO_8859_1_B2 0 // 178 ² SUPERSCRIPT TWO
  5103. #define ISO_8859_1_B3 0 // 179 ³ SUPERSCRIPT THREE
  5104. #define ISO_8859_1_B4 ACUTE_ACCENT_BITS + KEY_SPACE // 180 ´ ACUTE ACCENT
  5105. #define ISO_8859_1_B5 0 // 181 µ MICRO SIGN
  5106. #define ISO_8859_1_B6 0 // 182 ¶ PILCROW SIGN
  5107. #define ISO_8859_1_B7 0 // 183 · MIDDLE DOT
  5108. #define ISO_8859_1_B8 CEDILLA_BITS + KEY_SPACE // 184 ¸ CEDILLA
  5109. #define ISO_8859_1_B9 0 // 185 ¹ SUPERSCRIPT ONE
  5110. #define ISO_8859_1_BA 0 // 186 º MASCULINE ORDINAL
  5111. #define ISO_8859_1_BB 0 // 187 » RIGHT DOUBLE ANGLE QUOTE
  5112. #define ISO_8859_1_BC 0 // 188 ¼ FRACTION ONE QUARTER
  5113. #define ISO_8859_1_BD 0 // 189 ½ FRACTION ONE HALF
  5114. #define ISO_8859_1_BE 0 // 190 ¾ FRACTION THREE QUARTERS
  5115. #define ISO_8859_1_BF 0 // 191 ¿ INVERTED QUESTION MARK
  5116. #define ISO_8859_1_C0 0 // 192 À A GRAVE
  5117. #define ISO_8859_1_C1 ACUTE_ACCENT_BITS + KEY_A + SHIFT_MASK // 193 Á A ACUTE
  5118. #define ISO_8859_1_C2 0 // 194 Â A CIRCUMFLEX
  5119. #define ISO_8859_1_C3 0 // 195 Ã A TILDE
  5120. #define ISO_8859_1_C4 0 // 196 Ä A DIAERESIS
  5121. #define ISO_8859_1_C5 0 // 197 Å A RING ABOVE
  5122. #define ISO_8859_1_C6 0 // 198 Æ AE
  5123. #define ISO_8859_1_C7 CEDILLA_BITS + KEY_C + SHIFT_MASK // 199 Ç C CEDILLA
  5124. #define ISO_8859_1_C8 0 // 200 È E GRAVE
  5125. #define ISO_8859_1_C9 ACUTE_ACCENT_BITS + KEY_E + SHIFT_MASK // 201 É E ACUTE
  5126. #define ISO_8859_1_CA 0 // 202 Ê E CIRCUMFLEX
  5127. #define ISO_8859_1_CB 0 // 203 Ë E DIAERESIS
  5128. #define ISO_8859_1_CC 0 // 204 Ì I GRAVE
  5129. #define ISO_8859_1_CD ACUTE_ACCENT_BITS + KEY_I + SHIFT_MASK // 205 Í I ACUTE
  5130. #define ISO_8859_1_CE 0 // 206 Î I CIRCUMFLEX
  5131. #define ISO_8859_1_CF 0 // 207 Ï I DIAERESIS
  5132. #define ISO_8859_1_D0 0 // 208 Ð ETH
  5133. #define ISO_8859_1_D1 0 // 209 Ñ N TILDE
  5134. #define ISO_8859_1_D2 0 // 210 Ò O GRAVE
  5135. #define ISO_8859_1_D3 ACUTE_ACCENT_BITS + KEY_O + SHIFT_MASK // 211 Ó O ACUTE
  5136. #define ISO_8859_1_D4 0 // 212 Ô O CIRCUMFLEX
  5137. #define ISO_8859_1_D5 0 // 213 Õ O TILDE
  5138. #define ISO_8859_1_D6 0 // 214 Ö O DIAERESIS
  5139. #define ISO_8859_1_D7 KEY_RIGHT_BRACE + ALTGR_MASK // 215 × MULTIPLICATION
  5140. #define ISO_8859_1_D8 0 // 216 Ø O STROKE
  5141. #define ISO_8859_1_D9 0 // 217 Ù U GRAVE
  5142. #define ISO_8859_1_DA ACUTE_ACCENT_BITS + KEY_U + SHIFT_MASK // 218 Ú U ACUTE
  5143. #define ISO_8859_1_DB 0 // 219 Û U CIRCUMFLEX
  5144. #define ISO_8859_1_DC 0 // 220 Ü U DIAERESIS
  5145. #define ISO_8859_1_DD ACUTE_ACCENT_BITS + KEY_Z + SHIFT_MASK // 221 Ý Y ACUTE
  5146. #define ISO_8859_1_DE 0 // 222 Þ THORN
  5147. #define ISO_8859_1_DF KEY_QUOTE + ALTGR_MASK // 223 ß SHARP S TODO: testme
  5148. #define ISO_8859_1_E0 0 // 224 à a GRAVE
  5149. #define ISO_8859_1_E1 KEY_8 // 225 á a ACUTE
  5150. #define ISO_8859_1_E2 0 // 226 â a CIRCUMFLEX
  5151. #define ISO_8859_1_E3 0 // 227 ã a TILDE
  5152. #define ISO_8859_1_E4 0 // 228 ä a DIAERESIS
  5153. #define ISO_8859_1_E5 0 // 229 å a RING ABOVE
  5154. #define ISO_8859_1_E6 0 // 230 æ ae
  5155. #define ISO_8859_1_E7 CEDILLA_BITS + KEY_C // 231 ç c CEDILLA
  5156. #define ISO_8859_1_E8 0 // 232 è e GRAVE
  5157. #define ISO_8859_1_E9 KEY_0 // 233 é e ACUTE
  5158. #define ISO_8859_1_EA 0 // 234 ê e CIRCUMFLEX
  5159. #define ISO_8859_1_EB 0 // 235 ë e DIAERESIS
  5160. #define ISO_8859_1_EC 0 // 236 ì i GRAVE
  5161. #define ISO_8859_1_ED KEY_9 // 237 í i ACUTE
  5162. #define ISO_8859_1_EE 0 // 238 î i CIRCUMFLEX
  5163. #define ISO_8859_1_EF 0 // 239 ï i DIAERESIS
  5164. #define ISO_8859_1_F0 0 // 240 ð ETH
  5165. #define ISO_8859_1_F1 0 // 241 ñ n TILDE
  5166. #define ISO_8859_1_F2 0 // 242 ò o GRAVE
  5167. #define ISO_8859_1_F3 ACUTE_ACCENT_BITS + KEY_O // 243 ó o ACUTE
  5168. #define ISO_8859_1_F4 0 // 244 ô o CIRCUMFLEX
  5169. #define ISO_8859_1_F5 0 // 245 õ o TILDE
  5170. #define ISO_8859_1_F6 0 // 246 ö o DIAERESIS
  5171. #define ISO_8859_1_F7 KEY_LEFT_BRACE + ALTGR_MASK // 247 ÷ DIVISION
  5172. #define ISO_8859_1_F8 0 // 248 ø o STROKE
  5173. #define ISO_8859_1_F9 0 // 249 ù u GRAVE
  5174. #define ISO_8859_1_FA KEY_LEFT_BRACE // 250 ú u ACUTE
  5175. #define ISO_8859_1_FB 0 // 251 û u CIRCUMFLEX
  5176. #define ISO_8859_1_FC 0 // 252 ü u DIAERESIS
  5177. #define ISO_8859_1_FD KEY_7 // 253 ý y ACUTE
  5178. #define ISO_8859_1_FE 0 // 254 þ THORN
  5179. #define ISO_8859_1_FF 0 // 255 ÿ y DIAERESIS
  5180. #define UNICODE_20AC KEY_E + ALTGR_MASK // € Euro Sign
  5181. #define UNICODE_EXTRA00 0x011B // ě Small Letter E with caron
  5182. #define KEYCODE_EXTRA00 KEY_2
  5183. #define UNICODE_EXTRA01 0x0161 // š Small Letter S with caron
  5184. #define KEYCODE_EXTRA01 KEY_3
  5185. #define UNICODE_EXTRA02 0x010D // č Small Letter C with caron
  5186. #define KEYCODE_EXTRA02 KEY_4
  5187. #define UNICODE_EXTRA03 0x0159 // ř Small Letter R with caron
  5188. #define KEYCODE_EXTRA03 KEY_5
  5189. #define UNICODE_EXTRA04 0x017E // ž Small Letter Z with caron
  5190. #define KEYCODE_EXTRA04 KEY_6
  5191. #define UNICODE_EXTRA05 0x016F // ů Small Letter U with ring above
  5192. #define KEYCODE_EXTRA05 KEY_SEMICOLON
  5193. #define UNICODE_EXTRA06 0x0111 // đ Small Letter D with stroke
  5194. #define KEYCODE_EXTRA06 KEY_S + ALTGR_MASK
  5195. #define UNICODE_EXTRA07 0x0110 // Đ Capital Letter D with stroke
  5196. #define KEYCODE_EXTRA07 KEY_D + ALTGR_MASK
  5197. #define UNICODE_EXTRA08 0x0142 // ł Small Letter L with stroke
  5198. #define KEYCODE_EXTRA08 KEY_K + ALTGR_MASK
  5199. #define UNICODE_EXTRA09 0x0141 // Ł Capital Letter L with stroke
  5200. #define KEYCODE_EXTRA09 KEY_L + ALTGR_MASK
  5201. #define UNICODE_EXTRA0A 0x20AC // € Euro Sign
  5202. #define KEYCODE_EXTRA0A KEY_E + ALTGR_MASK
  5203. #endif // LAYOUT_CZECH
  5204. extern const KEYCODE_TYPE keycodes_ascii[];
  5205. extern const KEYCODE_TYPE keycodes_iso_8859_1[];
  5206. #ifdef __cplusplus
  5207. } // extern "C"
  5208. #endif
  5209. #endif