// Josh's Dvorak Keyboard Layout Some xtra stuff. // Josh Rahm (joshuarahm@gmail.com) default partial alphanumeric_keys xkb_symbols "josh-dvorak-intl" { name[Group1]= "English (Josh, Dvorak, international with dead keys)"; name[Group2]= "English (Josh, Dvorak, Vi Mode)"; include "us(dvorak)" key.type = "EIGHT_LEVEL"; key { symbols = [NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol], actions = [ SetMods(modifiers=level1,clearLocks=True), SetMods(modifiers=level1,clearLocks=True), SetMods(modifiers=level1,clearLocks=True), SetMods(modifiers=level1,clearLocks=True), SetMods(modifiers=level1,clearLocks=True), SetMods(modifiers=level1,clearLocks=True), SetMods(modifiers=level1,clearLocks=True), SetMods(modifiers=level1,clearLocks=True) ] }; key { symbols[Group1] = [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L], symbols[Group2] = [] }; key { type[Group1]="ONE_LEVEL", symbols[Group1]=[ISO_Level3_Shift] // symbols[Group1] = [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R], // symbols[Group2] = [] }; key { symbols[Group1] = [Hyper_L, Hyper_L, Hyper_L, Hyper_L, Hyper_L, Hyper_L, Hyper_L, Hyper_L], symbols[Group2] = [] }; key { symbols[Group1] = [ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift], symbols[Group2] = [] }; key { symbols[Group1] = [Escape, Escape, Home, Home, User, Pointer_EnableKeys, Delete, Delete], symbols[Group2] = [] }; key { symbols[Group1] = [Return, Return], symbols[Group2] = [] }; // ‹Return› key { symbols[Group1] = [BackSpace], symbols[Group2] = [] }; key { symbols[Group1] = [Super_L, ISO_Left_Tab], symbols[Group2] = [] }; key { symbols[Group1] = [Super_L, Super_L], symbols[Group2] = [] }; modifier_map Mod4 {, }; modifier_map Mod3 {}; key { type[Group1]="ONE_LEVEL", symbols[Group1]=[ISO_Level3_Shift] }; modifier_map Mod5 {}; key { symbols[Group1] = type[Group1]="ONE_LEVEL", symbols[Group1]=[ISO_Level5_Shift], symbols[Group2] = [] }; modifier_map Lock { }; // Set Menu and PrintScreen to Hyper. key { symbols = [Hyper_R, Hyper_R], actions = [SetMods(modifiers=Mod3), SetMods(modifiers=Mod3)] }; key { symbols = [Hyper_R, Hyper_R], actions = [SetMods(modifiers=Mod3), SetMods(modifiers=Mod3)] }; key { symbols[Group1] = [grave, asciitilde, dead_grave, dead_tilde], symbols[Group2] = [] }; key { symbols[Group1] = [1, exclam, exclamdown, onesuperior, U2081, U00B9], symbols[Group2] = [] }; key { symbols[Group1] = [2, at, twosuperior, dead_doubleacute, U2082, U00B2], symbols[Group2] = [] }; key { symbols[Group1] = [3, numbersign, threesuperior, dead_macron, U2083, threesuperior], symbols[Group2] = [] }; key { symbols[Group1] = [4, dollar, currency, sterling, U2084, U2074], symbols[Group2] = [] }; key { symbols[Group1] = [5, percent, EuroSign, dead_cedilla, U2085, U2075], symbols[Group2] = [] }; key { symbols[Group1] = [6, dead_circumflex, onequarter, asciicircum, U2086, U2076], symbols[Group2] = [] }; key { symbols[Group1] = [7, ampersand, onehalf, dead_horn, U2087, U2077], symbols[Group2] = [] }; key { symbols[Group1] = [8, asterisk, threequarters, dead_ogonek, U2088, U2078, infinity], symbols[Group2] = [] }; key { symbols[Group1] = [9, parenleft, leftsinglequotemark, dead_breve, U2089, U2079], symbols[Group2] = [] }; key { symbols[Group1] = [0, parenright, rightsinglequotemark, dead_abovering, U2080, U2070], symbols[Group2] = [] }; key { symbols[Group1] = [bracketleft, braceleft, guillemotleft, leftdoublequotemark], symbols[Group2] = [] }; key { symbols[Group1] = [bracketright, braceright, guillemotright, rightdoublequotemark], symbols[Group2] = [] }; key { symbols[Group1] = [apostrophe, quotedbl, dead_acute, dead_diaeresis], symbols[Group2] = [] }; key { symbols[Group1] = [comma, less, ccedilla, Ccedilla, leftanglebracket, U2227], symbols[Group2] = [Pointer_Up, Pointer_Button4] }; key { symbols[Group1] = [period, greater, dead_abovedot, dead_caron, rightanglebracket, periodcentered, U2218, U2228], symbols[Group2] = [] }; key { symbols[Group1] = [p, P, odiaeresis, Odiaeresis, Greek_pi, Greek_PI], symbols[Group2] = [] }; key { symbols[Group1] = [y, Y, udiaeresis, Udiaeresis, Greek_upsilon, Greek_UPSILON], symbols[Group2] = [] }; key { symbols[Group1] = [f, F, Greek_alpha, Greek_ALPHA, Greek_phi, Greek_PHI], symbols[Group2] = [] }; key { symbols[Group1] = [g, G, Greek_epsilon, Greek_EPSILON, Greek_gamma, Greek_GAMMA], symbols[Group2] = [] }; key { symbols[Group1] = [c, C, copyright, cent, Greek_psi, Greek_PSI], symbols[Group2] = [] }; key { symbols[Group1] = [r, R, registered, registered, Greek_rho, Greek_RHO], symbols[Group2] = [] }; key { symbols[Group1] = [l, L, oslash, Ooblique, Greek_lambda, Greek_LAMBDA], symbols[Group2] = [Right, Right, Pointer_Right] }; key { symbols[Group1] = [slash, question, questiondown, dead_hook], symbols[Group2] = [] }; key { symbols[Group1] = [equal, plus, multiply, division, U2295, U2297, U229B, U29FA], symbols[Group2] = [] }; // = + × ÷ ⊕ ⊗ ⊛ ∅ key { symbols[Group1] = [a, A, aacute, Aacute, Greek_alpha, Greek_ALPHA], symbols[Group2] = [Pointer_Left] }; key { symbols[Group1] = [o, O, oacute, Oacute, Greek_omicron, Greek_OMICRON, U01A1, U01A0], symbols[Group2] = [Pointer_Down, Pointer_Button5] }; key { symbols[Group1] = [e, E, eacute, Eacute, Greek_epsilon, Greek_EPSILON], symbols[Group2] = [Right] }; key { symbols[Group1] = [u, U, uacute, Uacute, Greek_theta, Greek_THETA], symbols[Group2] = [Prior, Prior, NoSymbol, NoSymbol, NoSymbol, NoSymbol] }; key { symbols[Group1] = [i, I, iacute, Iacute, Greek_iota, Greek_IOTA, U2208], symbols[Group2] = [ISO_Next_Group, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol] }; key { symbols[Group1] = [i, I, iacute, Iacute, Greek_iota, Greek_IOTA, U2208], symbols[Group2] = [ISO_Previous_Group] }; key { symbols[Group1] = [d, D, eth, ETH, Greek_delta, Greek_DELTA], symbols[Group2] = [Next, Next, NoSymbol, NoSymbol, NoSymbol, NoSymbol] }; key { symbols[Group1] = [h, H, Greek_lambda, Greek_LAMBDA, Greek_eta, Greek_ETA], symbols[Group2] = [Left, Left, Pointer_Left] }; key { symbols[Group1] = [t, T, thorn, THORN, Greek_tau, Greek_TAU], symbols[Group2] = [] }; key { symbols[Group1] = [n, N, ntilde, Ntilde, Greek_nu, Greek_NU, U2115], symbols[Group2] = [] }; key { symbols[Group1] = [s, S, ssharp, section, Greek_sigma, Greek_SIGMA, U017f, integral], symbols[Group2] = [] }; key { symbols[Group1] = [minus, underscore, yen, dead_belowdot, U2500], symbols[Group2] = [] }; key { symbols[Group1] = [semicolon, colon, paragraph, degree, Multi_key], symbols[Group2] = [] }; key { symbols[Group1] = [q, Q, adiaeresis, Adiaeresis], symbols[Group2] = [] }; key { symbols[Group1] = [j, J, idiaeresis, Idiaeresis, Greek_xi, Greek_XI], symbols[Group2] = [Down, Down, Pointer_Down] }; key { symbols[Group1] = [k, K, oe, OE, Greek_kappa, Greek_KAPPA], symbols[Group2] = [Up, Up, Pointer_Up] }; key { symbols[Group1] = [x, X, U2713, U2717, Greek_chi, Greek_CHI], symbols[Group2] = [Delete] }; key { symbols[Group1] = [b, B, Greek_beta, U2603, Greek_beta, Greek_BETA], symbols[Group2] = [] }; key { symbols[Group1] = [m, M, mu, mu, Greek_mu, Greek_MU], symbols[Group2] = [NoSymbol] }; key { symbols[Group1] = [w, W, aring, Aring, Greek_finalsmallsigma], symbols[Group2] = [] }; key { symbols[Group1] = [v, V, U1F609, U1F620, Greek_omega, Greek_OMEGA], symbols[Group2] = [NoSymbol] }; key { symbols[Group1] = [z, Z, ae, AE, Greek_zeta, Greek_ZETA], symbols[Group2] = [] }; key { symbols[Group1] = [backslash, bar, notsign, brokenbar, U2502], symbols[Group2] = [] }; key { symbols[Group1] = [space, space, U12001, U12002, U12003, U12004, U12005, U12006], symbols[Group2] = [Pointer_Button1] }; key { symbols[Group1] = [Down, U2193, U21D3], symbols[Group2] = [] }; key { symbols[Group1] = [Up, U2191, U21D1], symbols[Group2] = [] }; key { symbols[Group1] = [Left, U2190, U21D0], symbols[Group2] = [] }; key { symbols[Group1] = [Right, U2192, U21D2], symbols[Group2] = [] }; // A random key none of my keyboards have. Map it to tab so I can use xcape. key { symbols[Group1] = [Tab], symbols[Group2] = [] }; }; partial alphanumeric_keys xkb_symbols "jdvp" { include "jr(josh-dvorak-intl)" name[Group1]= "English (Josh, Dovark, Programmer, International)"; key.type = "EIGHT_LEVEL"; key { symbols[Group1] = [dollar, asciitilde] }; key { symbols[Group1] = [ ampersand, percent ] }; key { symbols[Group1] = [ bracketleft, 7, currency, nosymbol, U2087, U2077 ] }; key { symbols[Group1] = [ braceleft, 5, cent, nosymbol, U2085, U2075 ] }; key { symbols[Group1] = [ braceright, 3, yen, nosymbol, U2083, threesuperior ] }; key { symbols[Group1] = [ parenleft, 1, EuroSign, nosymbol, U2081, U00B9 ] }; key { symbols[Group1] = [ equal, 9, sterling, nosymbol, U2089, U2079 ] }; // symbols row, right side key { symbols[Group1] = [asterisk, 0, nosymbol, nosymbol, U2080, U2070] }; key { symbols[Group1] = [ parenright, 2, onehalf, nosymbol, U2082, U00B2 ] }; key { symbols[Group1] = [ plus, 4, nosymbol, nosymbol, U2084, U2074 ] }; key { symbols[Group1] = [ bracketright, 6, nosymbol, nosymbol, U2086, U2076 ] }; key { symbols[Group1] = [ exclam, 8, exclamdown, U2E18, U2088, U2078 ] }; // reversed interrobang key { symbols[Group1] = [ numbersign, grave, dead_grave ] }; key { symbols[Group1] = [ semicolon, colon, dead_diaeresis ] }; key { symbols[Group1] = [ at, asciicircum, dead_circumflex, dead_caron ] }; key { symbols[Group1] = [ apostrophe, quotedbl, dead_acute ] }; }; // The Royal Kludge Keyboard stupidly requires you to hold down Fn to toggle // escape, so swap the escape key with the tilda key. partial alphanumeric_keys xkb_symbols "jdvprk" { include "jr(jdvp)" key { symbols[Group1] = [ dollar, asciitilde ] , symbols[Group2] = [] }; key { symbols[Group1] = [ Escape ] }; };