github.com/jmigpin/editor@v1.6.0/util/uiutil/event/keys.go (about) 1 package event 2 3 //go:generate stringer -type KeySym -output zkeys.go 4 5 type KeySym int 6 7 const ( 8 KSymNone KeySym = 0 9 10 // let ascii codes keep their values (adding 256 ensures gap) 11 KSym_dummy_ KeySym = 256 + iota 12 13 KSym0 14 KSym1 15 KSym2 16 KSym3 17 KSym4 18 KSym5 19 KSym6 20 KSym7 21 KSym8 22 KSym9 23 24 KSymA 25 KSymB 26 KSymC 27 KSymD 28 KSymE 29 KSymF 30 KSymG 31 KSymH 32 KSymI 33 KSymJ 34 KSymK 35 KSymL 36 KSymM 37 KSymN 38 KSymO 39 KSymP 40 KSymQ 41 KSymR 42 KSymS 43 KSymT 44 KSymU 45 KSymV 46 KSymW 47 KSymX 48 KSymY 49 KSymZ 50 51 KSymSpace 52 KSymBackspace 53 KSymReturn 54 KSymEscape 55 KSymHome 56 KSymLeft 57 KSymUp 58 KSymRight 59 KSymDown 60 KSymPageUp 61 KSymPageDown 62 KSymEnd 63 KSymInsert 64 KSymShiftL 65 KSymShiftR 66 KSymControlL 67 KSymControlR 68 KSymAltL 69 KSymAltR 70 KSymAltGr 71 KSymSuperL // windows key 72 KSymSuperR 73 KSymDelete 74 KSymTab 75 KSymTabLeft 76 77 KSymNumLock 78 KSymCapsLock // only capitalizes letters 79 KSymShiftLock // prints all keys secondary symbols 80 81 KSymExclam // ! 82 KSymDoubleQuote // " 83 KSymNumberSign // # 84 KSymDollar // $ 85 KSymPercent // % 86 KSymAmpersand // & 87 KSymApostrophe // ' 88 KSymParentL // ( 89 KSymParentR // ) 90 KSymAsterisk // * 91 KSymPlus // + 92 KSymComma // , 93 KSymMinus // - 94 KSymPeriod // . 95 KSymSlash // / 96 KSymBackSlash // \ 97 KSymColon // : 98 KSymSemicolon // ; 99 KSymLess // < 100 KSymEqual // = 101 KSymGreater // > 102 KSymQuestion // ? 103 KSymAt // @ 104 KSymBracketL // [ 105 KSymBracketR // ] 106 107 KSymGrave // ` 108 KSymAcute // ´ 109 KSymCircumflex // ^ 110 KSymTilde // ~ 111 KSymCedilla // ¸ 112 KSymBreve // ˘ 113 KSymCaron // ˇ 114 KSymDiaresis // ¨ 115 KSymRingAbove // ˚ 116 KSymMacron // ¯ 117 118 KSymF1 119 KSymF2 120 KSymF3 121 KSymF4 122 KSymF5 123 KSymF6 124 KSymF7 125 KSymF8 126 KSymF9 127 KSymF10 128 KSymF11 129 KSymF12 130 KSymF13 131 KSymF14 132 KSymF15 133 KSymF16 134 135 KSymKeypad0 136 KSymKeypad1 137 KSymKeypad2 138 KSymKeypad3 139 KSymKeypad4 140 KSymKeypad5 141 KSymKeypad6 142 KSymKeypad7 143 KSymKeypad8 144 KSymKeypad9 145 KSymKeypadMultiply 146 KSymKeypadAdd 147 KSymKeypadSubtract 148 KSymKeypadDecimal 149 KSymKeypadDivide 150 151 KSymVolumeUp 152 KSymVolumeDown 153 KSymMute 154 155 KSymMultiKey 156 KSymMenu 157 ) 158 159 //---------- 160 161 type KeyModifiers uint16 162 163 func (km KeyModifiers) HasAny(m KeyModifiers) bool { 164 return km&m > 0 165 } 166 func (km KeyModifiers) Is(m KeyModifiers) bool { 167 return km == m 168 } 169 func (km KeyModifiers) ClearLocks() KeyModifiers { 170 w := []KeyModifiers{ModLock, ModNum} 171 u := km 172 for _, m := range w { 173 u &^= m 174 } 175 return u 176 } 177 178 const ( 179 // TODO: rename to KMod 180 ModNone KeyModifiers = 0 181 ModShift KeyModifiers = 1 << (iota - 1) 182 ModLock // caps // TODO: rename ModCapsLock 183 ModCtrl 184 Mod1 // ~ alt 185 Mod2 // ~ num lock 186 Mod3 187 Mod4 // ~ windows key 188 Mod5 // ~ alt gr 189 ) 190 const ( 191 ModNum = Mod2 // TODO: rename ModNumLock 192 ModAlt = Mod1 193 ModAltGr = Mod5 194 ) 195 196 //---------- 197 198 type MouseButton uint16 199 200 const ( 201 ButtonNone MouseButton = 0 202 ButtonLeft MouseButton = 1 << (iota - 1) 203 ButtonMiddle 204 ButtonRight 205 ButtonWheelUp 206 ButtonWheelDown 207 ButtonWheelLeft 208 ButtonWheelRight 209 ButtonBackward // TODO: rename X1? 210 ButtonForward // TODO: rename X2? 211 ) 212 213 //---------- 214 215 type MouseButtons uint16 216 217 func (mb MouseButtons) Has(b MouseButton) bool { 218 return mb&MouseButtons(b) > 0 219 } 220 func (mb MouseButtons) HasAny(bs MouseButtons) bool { 221 return mb&bs > 0 222 } 223 func (mb MouseButtons) Is(b MouseButton) bool { 224 return mb == MouseButtons(b) 225 }