A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 347 lines 18 kB view raw
1\subsection{Goban} 2\screenshot{plugins/images/ss-goban}{Goban}{The Rockbox Goban plugin} 3Goban is a a plugin for playing, viewing and recording games of Go (also known 4as Weiqi, Baduk, Igo and Goe). It uses standard Smart Game Format (SGF) files 5for saving and loading games. You can find a short introduction to Go at 6\url{http://senseis.xmp.net/?WhatIsGo} and more information about SGF files 7can be read at \url{http://senseis.xmp.net/?SmartGameFormat} or the SGF 8specification at \url{http://www.red-bean.com/sgf/}.\\ 9 10This plugin can load all modern SGF files (file format 3 or 4) with few problems. 11It attempts to preserve SGF properties which it doesn't understand, and most common 12SGF properties are handled fully. It is possible to view (and edit if you like) 13Kogo's Joseki Dictionary (\url{http://waterfire.us/joseki.htm}) with this plugin, 14although the load and save times can be on the order of a minute or two on 15particularly slow devices. Large SGF files may stop audio playback for the duration 16of the plugin's run in order to free up more memory and some very large SGF files will 17not even load on devices with little available memory.\\ 18 19\note{The plugin does \emph{NOT} support SGF files with multiple games in 20one file. These are rare, but if you have one don't even try it (the file will most 21likely be corrupted if you save over it). You have been warned.\\} 22 23The file \fname {/sgf/gbn\_def.sgf} is used by the plugin to store any unsaved 24changes in the most recently loaded game. This means that if you forget to save your 25changes, you should load \fname {/sgf/gbn\_def.sgf} immediately to offload the changes 26to another file. If you load another file first then your changes will be lost 27permanently. The \fname {/sgf/gbn\_def.sgf} file is also the file loaded if another 28is not selected.\\ 29 30The information panel which displays the current move number may also contain 31these markers: 32 33\begin{table} 34 \begin{rbtabular}{\textwidth}{lX}% 35 {\textbf{Mark} & \textbf{Meaning}}{}{} 36 \emph{+ } & There are nodes after the current node in the SGF tree. \\ 37 \emph{* } & There are sibling variations which can be navigated to using the % 38 \emph{Next Variation} menu option of the \emph{Context Menu}% 39 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_CLIP_PAD,% 40 MROBE100_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD,IRIVER_H100_PAD,% 41 IRIVER_H300_PAD,PBELL_VIBE500_PAD,MPIO_HD200_PAD,SANSA_FUZEPLUS_PAD,% 42 SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{ or the % 43 \opt{SANSA_FUZEPLUS_PAD}{\ButtonBottomRight}% 44 \opt{SANSA_E200_PAD,SANSA_C200_PAD}{\ButtonRec}% 45 \opt{SANSA_CLIP_PAD}{\ButtonHome}% 46 \opt{MROBE100_PAD}{\ButtonPower}% 47 \opt{GIGABEAT_PAD}{\ButtonA}% 48 \opt{GIGABEAT_S_PAD}{\ButtonPlay}% 49 \opt{PBELL_VIBE500_PAD}{\ButtonCancel}% 50 \opt{MPIO_HD200_PAD}{Long \ButtonFunc}% 51 \opt{MPIO_HD300_PAD}{\ButtonMenu}% 52 \opt{SAMSUNG_YH92X_PAD}{\ButtonFF{} + \ButtonUp} 53 \opt{SAMSUNG_YH820_PAD}{\ButtonRec{} + \ButtonUp} 54 \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonRec} button}. \\ 55 \emph{C } & There is a comment at the current node. It can be viewed/edited using 56 the \emph{Add/Edit Comment} menu option of the \emph{Context Menu}. \\ 57 \end{rbtabular} 58\end{table} 59 60\subsubsection{Controls} 61 \begin{btnmap} 62 \nopt{IPOD_1G2G_PAD,IPOD_3G_PAD,IPOD_4G_PAD,IRIVER_H10_PAD,% 63 MPIO_HD200_PAD,MPIO_HD300_PAD,touchscreen,XDUOO_X3_PAD}{\ButtonUp}% 64 \opt{IPOD_1G2G_PAD,IPOD_3G_PAD,IPOD_4G_PAD}{\ButtonMenu}% 65 \opt{IRIVER_H10_PAD,MPIO_HD300_PAD}{\ButtonScrollUp} 66 \opt{MPIO_HD200_PAD}{\ButtonRew} 67 \opt{touchscreen}{\TouchTopMiddle} 68 \opt{XDUOO_X3_PAD}{\ButtonHome} 69 & 70 \opt{HAVEREMOTEKEYMAP}{ 71 &} 72 Move cursor up 73 \\ 74 75 \nopt{IPOD_1G2G_PAD,IPOD_3G_PAD,IPOD_4G_PAD,IRIVER_H10_PAD,% 76 MPIO_HD200_PAD,MPIO_HD300_PAD,touchscreen,XDUOO_X3_PAD}{\ButtonDown}% 77 \opt{IPOD_1G2G_PAD,IPOD_3G_PAD,IPOD_4G_PAD}{\ButtonPlay}% 78 \opt{IRIVER_H10_PAD,MPIO_HD300_PAD}{\ButtonScrollDown} 79 \opt{MPIO_HD200_PAD}{\ButtonFF} 80 \opt{touchscreen}{\TouchBottomMiddle} 81 \opt{XDUOO_X3_PAD}{\ButtonOption} 82 & 83 \opt{HAVEREMOTEKEYMAP}{ 84 &} 85 Move cursor down 86 \\ 87 88 \nopt{MPIO_HD200_PAD,MPIO_HD300_PAD,touchscreen,XDUOO_X3_PAD}{\ButtonLeft} 89 \opt{MPIO_HD200_PAD}{\ButtonVolDown} 90 \opt{MPIO_HD300_PAD}{\ButtonRew} 91 \opt{touchscreen}{\TouchMidLeft} 92 \opt{XDUOO_X3_PAD}{\ButtonPrev} 93 & 94 \opt{HAVEREMOTEKEYMAP}{ 95 &} 96 Move cursor left 97 \\ 98 99 \nopt{MPIO_HD200_PAD,MPIO_HD300_PAD,touchscreen,XDUOO_X3_PAD}{\ButtonRight} 100 \opt{MPIO_HD200_PAD}{\ButtonVolUp} 101 \opt{MPIO_HD300_PAD}{\ButtonFF} 102 \opt{touchscreen}{\TouchMidRight} 103 \opt{XDUOO_X3_PAD}{\ButtonNext} 104 & 105 \opt{HAVEREMOTEKEYMAP}{ 106 &} 107 Move cursor right 108 \\ 109 110 \nopt{IRIVER_H10_PAD,IAUDIO_M3_PAD,PBELL_VIBE500_PAD% 111 ,MPIO_HD200_PAD,MPIO_HD300_PAD,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD% 112 ,touchscreen,XDUOO_X3_PAD,RG_NANO_PAD}{\ButtonSelect}% 113 \opt{IRIVER_H10_PAD,PBELL_VIBE500_PAD,SAMSUNG_YH92X_PAD% 114 ,SAMSUNG_YH820_PAD}{\ButtonPlay}% 115 \opt{MPIO_HD200_PAD}{\ButtonFunc} 116 \opt{MPIO_HD300_PAD}{\ButtonEnter} 117 \opt{touchscreen}{\TouchCenter} 118 \opt{RG_NANO_PAD}{\ButtonA} 119 \opt{XDUOO_X3_PAD}{\ButtonPlay} 120 & 121 \opt{HAVEREMOTEKEYMAP}{ 122 &} 123 Play a move (or use a tool if play-mode has been changed). 124 \\ 125 126 \opt{SANSA_E200_PAD,SANSA_FUZE_PAD,IPOD_1G2G_PAD,IPOD_3G_PAD% 127 ,IPOD_4G_PAD}{\ButtonScrollBack}% 128 \opt{SANSA_CLIP_PAD,SANSA_M200_PAD,SANSA_C200_PAD,GIGABEAT_PAD% 129 ,GIGABEAT_S_PAD}{\ButtonVolDown}% 130 \opt{IRIVER_H10_PAD}{\ButtonFF}% 131 \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOff}% 132 \opt{MROBE100_PAD}{\ButtonMenu}% 133 \opt{SANSA_FUZEPLUS_PAD}{\ButtonBack}% 134 \opt{IAUDIO_X5_PAD}{\ButtonPlay}% 135 \opt{touchscreen}{\TouchBottomLeft} 136 \opt{PBELL_VIBE500_PAD}{\ButtonOK{} + \ButtonLeft} 137 \opt{MPIO_HD200_PAD,MPIO_HD300_PAD}{\ButtonRec + \ButtonRew} 138 \opt{SAMSUNG_YH92X_PAD}{\ButtonFF{} + \ButtonLeft} 139 \opt{SAMSUNG_YH820_PAD}{\ButtonRec{} + \ButtonLeft} 140 \opt{RG_NANO_PAD}{\ButtonL} 141 \opt{XDUOO_X3_PAD}{\ButtonVolDown} 142 & 143 \opt{HAVEREMOTEKEYMAP}{ 144 &} 145 Retreat one node in the game tree 146 \\ 147 148 \opt{scrollwheel}{\ButtonScrollFwd}% 149 \opt{SANSA_CLIP_PAD,SANSA_M200_PAD,SANSA_C200_PAD,GIGABEAT_PAD% 150 ,GIGABEAT_S_PAD}{\ButtonVolUp}% 151 \opt{IRIVER_H10_PAD}{\ButtonRew}% 152 \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonOn}% 153 \opt{MROBE100_PAD,SANSA_FUZEPLUS_PAD}{\ButtonPlay}% 154 \opt{IAUDIO_X5_PAD}{\ButtonRec}% 155 \opt{touchscreen}{\TouchBottomRight} 156 \opt{PBELL_VIBE500_PAD}{\ButtonOK{} + \ButtonRight} 157 \opt{MPIO_HD200_PAD,MPIO_HD300_PAD}{\ButtonRec + \ButtonFF} 158 \opt{SAMSUNG_YH92X_PAD}{\ButtonFF{} + \ButtonRight} 159 \opt{SAMSUNG_YH820_PAD}{\ButtonRec{} + \ButtonRight} 160 \opt{RG_NANO_PAD}{\ButtonR} 161 \opt{XDUOO_X3_PAD}{\ButtonVolUp} 162 & 163 \opt{HAVEREMOTEKEYMAP}{ 164 &} 165 Advance one node in the game tree 166 \\ 167 168 \opt{SANSA_E200_PAD,SANSA_FUZE_PAD,SANSA_CLIP_PAD,SANSA_M200_PAD% 169 ,SANSA_C200_PAD,IRIVER_H10_PAD,IAUDIO_X5_PAD,SANSA_FUZEPLUS_PAD,XDUOO_X3_PAD% 170 }{\ButtonPower}% 171 \opt{MROBE100_PAD}{\ButtonDisplay}% 172 \opt{IPOD_1G2G_PAD,IPOD_3G_PAD,IPOD_4G_PAD}{Long \ButtonSelect}% 173 \opt{GIGABEAT_PAD,GIGABEAT_S_PAD,PBELL_VIBE500_PAD,MPIO_HD300_PAD}% 174 {\ButtonMenu}% 175 \opt{IRIVER_H100_PAD,IRIVER_H300_PAD}{\ButtonMode}% 176 \opt{MPIO_HD200_PAD}{Long \ButtonPlay} 177 \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{\ButtonRew} 178 \opt{RG_NANO_PAD}{\ButtonB} 179 \opt{touchscreen}{\TouchTopLeft} 180 & 181 \opt{HAVEREMOTEKEYMAP}{ 182 &} 183 Main Menu 184 \\ 185 186 \opt{SANSA_E200_PAD,SANSA_FUZE_PAD,SANSA_C200_PAD,GIGABEAT_PAD,GIGABEAT_S_PAD% 187 ,IRIVER_H100_PAD,IRIVER_H300_PAD,MROBE100_PAD,IAUDIO_X5_PAD,IRIVER_H10_PAD% 188 ,MPIO_HD200_PAD,PBELL_VIBE500_PAD,touchscreen,SANSA_FUZEPLUS_PAD% 189 ,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD,RG_NANO_PAD}{% 190 \nopt{IRIVER_H10_PAD,touchscreen,PBELL_VIBE500_PAD,SAMSUNG_YH92X_PAD,% 191 MPIO_HD200_PAD,MPIO_HD300_PAD,SANSA_FUZEPLUS_PAD,SAMSUNG_YH820_PAD% 192 ,RG_NANO_PAD}% 193 {Long \ButtonSelect}% 194 \opt{IRIVER_H10_PAD}{Long \ButtonPlay} 195 \opt{touchscreen}{Long \TouchCenter} 196 \opt{PBELL_VIBE500_PAD}{\ButtonOK} 197 \opt{SANSA_FUZEPLUS_PAD}{\ButtonBottomLeft} 198 \opt{MPIO_HD200_PAD}{Long \ButtonFunc} 199 \opt{MPIO_HD300_PAD}{Long \ButtonEnter} 200 \opt{RG_NANO_PAD}{\ButtonX} 201 \opt{SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD}{Long \ButtonPlay}% 202 & 203 \opt{HAVEREMOTEKEYMAP}{ 204 &} 205 Context Menu 206 \\ 207 } 208 209 \opt{SANSA_E200_PAD,SANSA_C200_PAD,SANSA_FUZE_PAD,MROBE100_PAD% 210 ,GIGABEAT_PAD,GIGABEAT_S_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,SANSA_CLIP_PAD% 211 ,PBELL_VIBE500_PAD,MPIO_HD200_PAD,touchscreen,SANSA_FUZEPLUS_PAD, 212 ,SAMSUNG_YH92X_PAD,SAMSUNG_YH820_PAD,RG_NANO_PAD}{% 213 \opt{SANSA_E200_PAD,SANSA_C200_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD% 214 ,MPIO_HD200_PAD,MPIO_HD300_PAD}{\ButtonRec}% 215 \opt{SANSA_FUZE_PAD,SANSA_CLIP_PAD}{\ButtonHome}% 216 \opt{MROBE100_PAD}{\ButtonPower}% 217 \opt{GIGABEAT_PAD}{\ButtonA}% 218 \opt{GIGABEAT_S_PAD}{\ButtonPlay}% 219 \opt{touchscreen}{\TouchTopRight}% 220 \opt{PBELL_VIBE500_PAD}{\ButtonCancel}% 221 \opt{SANSA_FUZEPLUS_PAD}{\ButtonBottomRight}% 222 \opt{SAMSUNG_YH92X_PAD}{\ButtonFF{} + \ButtonUp}% 223 \opt{RG_NANO_PAD}{\ButtonY} 224 \opt{SAMSUNG_YH820_PAD}{\ButtonRec{} + \ButtonUp}% 225 & 226 \opt{HAVEREMOTEKEYMAP}{ 227 &} 228 Go to the next variation when at the first node in a branch 229 \\ 230 } 231 \end{btnmap} 232 233\subsubsection{Menus} 234\begin {description} 235\item [Main Menu. ] 236 The main menu for game setup and access to other menus. 237 \begin{description} 238 \item[New.] Create a new game with your choice of board size and handicaps. 239 \item[Save.] Save the current state of the game. It will be saved to 240 \fname {/sgf/gbn\_def.sgf} unless otherwise set. 241 \item[Save As.] Save to a specified file. 242 \item[Game Info.] View and modify the metadata of the current game. 243 \item[Playback Control.] Control the playback of the current playlist 244 and modify the volume of your player. 245 \item[Zoom Level.] Zoom in or out on the board. If you set the zoom level, 246 it will be saved and used again the next time you open this plugin. 247 \item[Options.] Open the Options Menu. 248 \item[Context Menu.] Open the Context Menu which allows you to set play 249 modes and other tools. 250 \item[Quit.] Leave the plugin. Any unsaved changes are saved to 251 \fname {/sgf/gbn\_def.sgf}. 252 \end{description} 253\item [Game Info. ] 254 The menu for modifying game info (metadata) of the current game. This 255 information will be saved to the SGF file and can be viewed in almost all 256 SGF readers. 257 \begin{description} 258 \item[Basic Info.] Shows a quick view of the basic game metadata, if any 259 has been set (otherwise does nothing). This option does not allow 260 editing. 261 \item[Time Limit.] The time limit of the current game. 262 \item[Overtime.] The overtime settings of the current game. 263 \item[Result.] The result of the current game. This text must follow the 264 format specified at \url{http://www.red-bean.com/sgf/properties.html#RE} 265 to be read by other SGF readers. Some examples are 266 \emph {B+R} (Black wins by resignation), 267 \emph {B+5.5} (Black wins by 5.5 points), 268 \emph {W+T} (White wins on Time). 269 \item[Handicap.] The handicap of the current game. 270 \item[Komi.] The komi of the current game (compensation to the white 271 player for black having the first move). 272 \item[Ruleset.] The name of the ruleset in use for this game. 273 The \emph{NZ} and \emph{GOE} rulesets include suicide as a legal 274 move (for multi-stone suicide only); the rest do not. 275 \item[Black Player.] The name of the black player. 276 \item[Black Rank.] Black's rank, in dan or kyu. 277 \item[Black Team.] The name of black's team, if any. 278 \item[White Player.] The name of the white player. 279 \item[White Rank.] White's rank, in dan or kyu. 280 \item[White Team.] The name of white's team, if any. 281 \item[Date.] The date that this game took place. This text must follow 282 the format specified at \url{http://www.red-bean.com/sgf/properties.html#DT} 283 to be read by other SGF readers. 284 \item[Event.] The name of the event which this game was a part of, if any. 285 \item[Place.] The place that this game took place. 286 \item[Round.] If part of a tournament, the round number for this game. 287 \item[Done.] Return to the previous menu. 288 \end{description} 289 290\item [Options. ] 291 Customize the behavior of the plugin in certain ways. 292 \begin{description} 293 \item[Show Child Variations?] Enable this to mark child variations on 294 he board if there are more than one. Note: variations which don't 295 start with a move are not visible in this way. 296 \item[Disable Idle Poweroff?] Enable this if you do not want the \dap{} 297 to turn off after a certain period of inactivity (depends on your 298 global Rockbox settings). 299 \item[Idle Autosave Time.] Set the amount of idle time to wait before 300 automatically saving any unsaved changes. These autosaves go to 301 the file \fname {/sgf/gbn\_def.sgf} regardless of if you have 302 loaded a game or used \setting{Save As} to save the game before or 303 not. Set to \setting{Off} to disable this functionality completely. 304 \item[Automatically Show Comments?] If this is enabled and you navigate 305 to a node containing game comments, they will automatically be 306 displayed. 307 \end{description} 308 309\item [Context Menu. ] 310 The menu for choosing different play modes and tools, adding or editing 311 comments, adding pass moves, or switching between sibling variations. 312 \begin{description} 313 \item[Play Mode.] Play moves normally on the board. If there are child 314 moves from the current node, this mode will let you follow 315 variations by simply playing the first move in the sequence. 316 Unless it is following a variation, this mode will not allow you to 317 play illegal moves. This is the default mode before another is set 318 after loading a game or creating a new one. 319 \item[Add Black Mode.] Add black stones to the board as desired. These 320 stones are not moves and do not perform captures or count as ko threats. 321 \item[Add White Mode.] Add white stones to the board as desired. These 322 stones are not moves and do not perform captures or count as ko threats. 323 \item[Erase Stone Mode.] Remove stones from the board as desired. These 324 removed stones are not counted as captured, they are simply removed. 325 \item[Pass.] Play a single pass move. This does not change the mode of 326 play. 327 \item[Next Variation.] If the game is at the first move in a variation, 328 this will navigate to the next variation after the current one. This 329 is the only way to reach variations which start with adding or 330 removing stones, as you cannot follow them by ``playing'' the same move. 331 \item[Force Play Mode.] The same as Play Mode except that this mode will 332 allow you to play illegal moves such as retaking a ko immediately 333 without a ko threat, suicide on rulesets which don't allow it 334 (including single stone suicide), and playing a move where there 335 is already a stone. 336 \item[Mark Mode.] Add generic marks to the board, or remove them. 337 \item[Circle Mode.] Add circle marks to the board, or remove them. 338 \item[Square Mode.] Add square marks to the board, or remove them. 339 \item[Triangle Mode.] Add triangle marks to the board, or remove them. 340 \item[Label Mode.] Add one character labels to the board. Each label 341 starts at the letter `a' and each subsequent application of a label 342 will increment the letter. To remove a label, click on it until it 343 cycles through the allowed letters and disappears. 344 \item[Add/Edit Comment.] Add or edit a comment at the current node. 345 \item[Done.] Go back to the previous screen. 346 \end{description} 347\end{description}