Compare commits

...

75 commits

Author SHA1 Message Date
Lourenço Soares
0b3a5ab1e6 plugin lrcplayer: Added manual scrolling feature
lrcplayer currently automatically scrolls the lyrics for you, as it assumes that there is sync information in the lyrics. In the case where there aren't (like for ID3V2 USLT tags), the plugin will automatically assume timestamps and will scroll automatically.
This commit adds an option in the Display Menu to allow automatic scrolling to be disabled. When disabled, you can scroll the lyrics using the volume keys (like you would on the iPod's OS).

Change-Id: I87ef27fd2b84c97374bdfd0e47f4c00ddb4bc85e
2026-02-19 16:10:14 -05:00
Aidan MacDonald
8013aa2370 audio: remove pcm_sw_volume include from sound.c
Drop the include because nothing here needs it.

Change-Id: Iad7ada127589c649359b3eea8bf2a21f5f00a344
2026-02-19 14:16:26 -05:00
Roman Artiukhin
3373ed6744 playback: fix single mode handling with auto frequency switch enabled
Fix single mode fails to pause between tracks with different sample rates with auto frequency switch enabled.

Fixup for c199d9a3

Change-Id: I51bbd33a15be16b711b3a8e46c0cab1b15a93705
2026-02-19 11:59:10 -05:00
Roman Artiukhin
5cf3c6bf9a Add ability to specify autostart plugin path and argument
Extend AUTOROCK define functionality to allow specifying both the
autostart plugin path and its argument.

Example:
#define AUTOROCK VIEWERS_DATA_DIR "/imageviewer.rock"
#define AUTOROCK_ARG "/jpegs/sample.jpg"

Change-Id: Icc41bceac676e8db17d3a63baefdf96e3023c181
2026-02-19 10:28:35 -05:00
Solomon Peachy
6f302083b5 cleanup: Get rid of erroneous execututable bit on various source files
Change-Id: I6382ba56dc6d99189c8647b010208c33fc2da7ca
2026-02-19 07:54:35 -05:00
Aidan MacDonald
af9a9bd9d4 echoplayer: increase LCD RGB & SPI output speed to medium
At low speed there's some occasional corrupted pixels,
most visible on album art and such; this goes away at
medium speed.

Change-Id: Ice4eaec4284023d2d3f5c571b242cb27ebc26da9
2026-02-18 18:14:24 -05:00
Aidan MacDonald
e5e82820f6 echoplayer: re-enable 50 MHZ SDMMC bus
The problem with drive strength and things not working reliably
at 50 MHz turned out to be entirely caused by the ESD diodes on
the data/command/clock lines, which have a whopping 200-300 pF
junction capacitance -- 6-10x higher than the 30 pF limit given
by the MMC spec.

After desoldering the diodes the bus seems stable at 50 MHz and
with any drive strength (note MEDIUM is still fast enough even
for 50 MHz, so the drive strength is unchanged).

Change-Id: If9847ee4145f5ed2f7e172cfa89acad0737a897f
2026-02-18 18:14:11 -05:00
Roman Artiukhin
c199d9a369 playback: fix single mode briefly plays audio from the next track before pausing
Change-Id: Iab82427d5429210701e65103325f72c7919685e1
2026-02-18 17:04:31 +02:00
Solomon Peachy
41567532a1 jz47xx: Further SD driver improvements
* Get rid of the SD_CIM_RESET meta-command and put all
   reset/init logic into one place
 * Don't double-issue the SD_GO_IDLE_STATE command
 * Explicitly set lowest speed upon reset

Change-Id: I5abfe9f64997e39087b8a77d525f90c77733a1a8
2026-02-17 17:34:59 -05:00
Solomon Peachy
e8b75a52ab sansafuzeplus: Support up to 96KHz playback.
It was limited to 48KHz due to insufficient IRAM but at some point in
the last five years or so that must have changed.

Change-Id: Ia893ed5e1f3026158daad77991c3d9cca2fed97c
2026-02-17 14:37:38 -05:00
Solomon Peachy
59f78841fd jz47xx: Numerous enhancements to the SD driver
* Rework logf/DEBUG distinction
 * Don't try to init a card that isn't detected
 * Inform card that host supports SDUC
 * Implement CMD22 (SET_UPPER_ADDR)
 * Implement CMD23 (SET_BLOCK_COUNT)
 * Disable DMA for transfers under 512 bytes
 * Created ACMD+data xfer command path
 * Incorrect handling of RESPONSE_R7
 * Clean up 4bit stuff, only turn it on after we enable it in the card.
 * Clear END_CMD_RES bit _after_ we check the status

 * Probe SCR  <-- NOT YET WORKING, DISABLED

jz4740 had these additional improvements:

 * Restructuring to bring it closer to 4760 driver
 * Unified read/write setup code
 * IRQ handling and polling improvements

Change-Id: I47379f097af4bf50177499b3d80a6c9c42d48057
2026-02-16 21:54:35 -05:00
Solomon Peachy
478303346c sd: Add definition for SET_BLOCK_COUNT command
Change-Id: Ib9cdc8e8bb7a43a4642be8cf88a1d734a6ae4808
2026-02-16 18:12:32 -05:00
Solomon Peachy
101f5cffe6 jz4740: NAND address needs to be 'unsigned long' not sector_t
Change-Id: I58ec94710b938306385df2482bd9279d09fb5362
2026-02-16 18:11:13 -05:00
Solomon Peachy
285157b1a8 jz4760: Correct typo in SoC header for MSC_CMDAT_RESPONSE_R7
Change-Id: I71226d1adb03a56cfea314ddd7af4f198a008986
2026-02-16 18:10:30 -05:00
Roman Artiukhin
aea9e1b63f configure: add ability to select plugins to build in --plugins flag
Use ":" as the separator. Useful for plugin development and debugging.

Example:
../tools/configure --target=hibyr1 --type=ADS --plugins="properties.c:imageviewer"

This creates a debug simulator build for Hiby R1 with the properties.c file and the imageviewer directory plugins enabled.

Change-Id: If974cfb0c54bd2c1a53ae11cc3f942c698ef2fe4
2026-02-16 13:42:58 +02:00
Aidan MacDonald
dd21a1d1d9 echoplayer: reduce LCD RGB & SPI output speed
Low speed works for 50pF loads up to 12 MHz. LCD signals
fall well within those limits so there's no reason to use
any higher speed.

Change-Id: I6dab899fac316bb02572174ef13a98cccbf4ae66
2026-02-10 15:51:32 +00:00
Aidan MacDonald
006859f16b stm32h7: spi: fix incorrect early transfer completion
The semaphore was released after all bytes were read/written
without waiting for the EOT event, which is why the delay at
the end of the transfer needed to be longer than expected.

Change-Id: I6b48fc01cda69564c0ec8f843afd1b0c3a9c5a3c
2026-02-10 15:51:32 +00:00
William Wilgus
46d644fcd7 stars.lua screen does not update int the sim
SDL needs to do lcd_update from the main thread
stars.lua uses an event that runs in a timer thread
so in the sim the screen never updates

Change-Id: I6002525363010c3133ebbfb490763f747c5d773a
2026-02-10 10:46:15 -05:00
Ingmar Steen
7327d9fb6c Implement set block count (CMD23) for x1000 target.
I have a 1TB SD card that gets filesystem corruption when writing large
amounts of data when using Rockbox in USB storage mode. The card doesn't show
this behaviour when using the original firmware or when using an external SD
card writer.

This is on an Aigo Eros Q device. Same brand 512GB card does not exhibit this
behaviour.

Whether this specific SD card explicitly requires CMD23 or if there's a
problem with the controller's timing of auto-CMD12 in combination with this
card is currently unknown, but implementing it does solve the problem.

This change request implements CMD23 by first probing if SBC is supported by
the SD card and then using it instead of AUTO_CMD12.

Change-Id: Ib2dc8e179b0fab98ca59c348061cb7d5850884dd
2026-02-10 07:43:47 -05:00
William Wilgus
ea5b0fb33a Clip Plus, Zip, Xduoo X3 Reconfigure keyboard to better use screen
Someone opened a bug, its not a bug but it is annoying
these are the smallest screens so the 18 character width ends up
wasting lines that could be displaying characters

this layout repeats some but should be more ergonomic

Change-Id: I2ed4c0887477aac49821c4edb6f3bf174e38d36e
2026-02-09 22:17:22 -05:00
Aidan MacDonald
06c9d87f53 stm32h7: sdmmc: implement missing R1b response handling
The driver didn't handle the busy signal at the end of
some command responses (R1b response type), notably the
CMD12 (STOP_TRANSMISSION) sent after a multiblock write
would time out because DTIMER==0 and leave the DPSM in
an incorrect state for the next command, causing a hang.

Change-Id: I406337a7612f759418a4872979aa2de5aa2244c7
2026-02-09 14:21:30 +00:00
Aidan MacDonald
c390467d19 stm32h7: sdmmc: don't panic on spurious IRQs
When doing I/O, the interrupt can rarely fire with no
active command and no status bits set. This is probably
because the interrupt is set pending by the NVIC while
the handler is already running, so should be harmless.

Change-Id: I0c2570abe6e3c85ddbfa2ebe0afcf8677b77408f
2026-02-09 14:21:30 +00:00
Solomon Peachy
f5be6cd10c rbutil: Add support for Vietnamese to the SAPI TTS glue code
Change-Id: I2cd7f8540717a95b3d05e836c5502313a9db6b50
2026-02-08 20:27:00 -05:00
Solomon Peachy
3629a765d2 FS13774 - Translate units in file operation splash messages
'MiB' and 'KiB' were hardcoded; use LANG_MEBIBYTE/KIBIBYTE instead.

Change-Id: I456521a222e213379f929e4d1113e084f87a3ac4
2026-02-08 20:02:38 -05:00
Solomon Peachy
7c00a059ff FS#13781 - Updated Hungarian Translation (Gyúróczki Norbert)
Change-Id: I59c57b025c4afdfd5b66ffc63f5316da1d86c657
2026-02-08 17:29:21 -05:00
William Wilgus
ed84047884 [Fix Red] open_plugins rb-> is required
Change-Id: I1f1a7e487d46a0427be7cebd319c65b848b4a9fb
2026-02-08 14:39:17 -05:00
William Wilgus
ef7739160b [BugFix] open_plugins allow more than one entry with a plugin / parameter
you should be able to have multiple parameters to a single plugin
you can do this from outsid the plugin, but not from within the plugin
this makes it possible to have several entries with the same
plugin and a different parameter for each entry

it now also updates the name of the entry to the name of the parameter
instead of the name of the plugin (unless user edited it)

Change-Id: Ifb52b21e3b8ed3257364635b5d92e7c21a35a199
2026-02-08 13:58:36 -05:00
Solomon Peachy
9057154fff mrobe500: Allow bootloader build without HAVE_BOOTLOADER_USB_MODE
I'm leaving it enabled because that's clearly the intent
of the bootloader, but at least there's now an easy path to disabling it
if so desired.

Change-Id: I4f4ecc9a453d376f92e411e0544b587fe4b4c864
2026-02-07 10:48:22 -05:00
Solomon Peachy
b722e3c83a mrobe500: define HAVE_BOOTLOADER_USB_MODE
Fixes red, and will restore USB functionality that was effectively
broken from earlier commits.

Change-Id: I98150a81e3f73131bfedccdaf3de740a091debf9
2026-02-07 09:32:16 -05:00
Solomon Peachy
80aaaaa2af bootloaders: Don't build usb_core without HAVE_BOOTLOADER_USB_MODE
This way we don't need to stub out a bunch of functionality when we
don't have any actual USB class drivers enabled.

Change-Id: Ia0ecf5be4bb41bebfcd347090959f3204a2aba59
2026-02-07 08:46:10 -05:00
Aidan MacDonald
58b186d6de Remove Creative Zen Vision and Vision:M ports
They haven't seen development activity for the better part
of two decades and apparently were never able to even boot
to Rockbox, although the Rockbox bootloader could load the
original firmware.

Change-Id: I5cfa5909c21feaf2825aa685a05e78044b893a13
2026-02-06 07:31:54 -05:00
Aidan MacDonald
5a21f049dc echoplayer: add exit WPS button to keymap
Change-Id: I3a7ef3ee0fb7494645338d3951fc9bc0c793503c
2026-02-06 07:09:41 -05:00
Aidan MacDonald
19af7131e2 echoplayer: allow enabling system debug in normal builds
Allow toggling the system debug state from the debug menu
in Rockbox, or by holding a button combo at boot, so that
an SWD/JTAG debugger can be attached to normal non-debug
builds without too much hassle.

Change-Id: Iee47ef916ade2e5ec1094a63c68e48f1b27b0bbb
2026-02-06 07:09:32 -05:00
Aidan MacDonald
02648abb8a echoplayer: disable 50 MHz SDMMC bus clock
While 50 MHz works for low activity and small amounts of
data, there are frequent CRC errors when handling larger
transfers. Increasing drive strength only makes it worse.
Everything seems stable at 25 MHz though.

Change-Id: I3471c490ab63b2302b21ee2fe601519ee5a40ce5
2026-02-06 07:08:28 -05:00
Aidan MacDonald
45a61d7e7b echoplayer: enable multiblock transfers for SDMMC
Change-Id: I152a6d58b008041d646ddcfec4273a47c4060932
2026-02-06 10:58:42 +00:00
Aidan MacDonald
6da20a18c3 sdmmc_host: support multiblock transfers
Change-Id: I6414028bbafd4ea4ef469f9a387f4bd52ec227e5
2026-02-06 10:58:42 +00:00
Solomon Peachy
acc9c21a78 FS#13773 - Update Latvian Translation (Renalds Belaks)
Change-Id: I8bc5a9f9ca5ed652d3751e7a54034f3aa19f1df1
2026-02-05 19:42:34 -05:00
Aidan MacDonald
a6c290e8e5 jz47xx: fix plugins/codec link address
Removing STUBOFFSET in commit 78542df466 caused DRAMSIZE
to be computed incorrectly, not taking into account the
16k offset used for 'IRAM'. As a result plugins & codecs
got shifted 16k upwards from their intended load address,
making them unable to load.

Change-Id: I6c338e04506e12fa2b8a69286a1ed785a2f8042d
2026-02-05 20:33:51 +00:00
Aidan MacDonald
92b0bf7a27 Clean up .ncdata/ncbss hackery in plugin linker script
The mess here can be reduced by paying careful attention to
how the linker allocates LMAs/VMAs within MEMORY regions.

Changing the way .ncdata and .ncbss are defined so that they
reserve the LMA/VMA ranges they use in PLUGIN_RAM removes the
need to explicitly set the VMAs of other sections, cutting
down on the number of ifdefs needed and making the script a
bit simpler.

Change-Id: I316fc6e8dedd621537261d52c1ec7c20ec09438a
2026-02-05 09:38:51 -05:00
Aidan MacDonald
bce2c4e069 Convert users of SHAREDDATA_ATTR to SHAREDBSS_ATTR
The handful of uses are only doing zero initialization
so don't need to go in the data section, they can go in
bss instead.

Change-Id: I7108ac60867aa20b4429ac0747d00109563bb3bf
2026-02-05 07:57:07 -05:00
Aidan MacDonald
7b91b81e49 stm32h7: define correct DRAM origin for plugins
Change-Id: I7fab9da0e99f328ce602607057f52620812476a8
2026-02-05 10:08:45 +00:00
Solomon Peachy
1a2235fb18 manual: Document HifiWalker H2 v2.3 as an erosqnative hw4 variant
Change-Id: I685a5c71b074f1942e1d345a2fe7d73f97ccfe76
2026-02-04 23:29:25 -05:00
Aidan MacDonald
653bca7ff4 make: allow building flat binary plugins on USE_ELF targets (attempt 2)
Looks like I forgot to test the hosted builds and for some
reason thought that make would expand objcopy recursively...

Change-Id: I61264eadcb1235660566f6a9f19f8718ebe14583
2026-02-04 16:45:25 +00:00
Aidan MacDonald
ebd273832d Remove Mini2440 and Lyre prototype 1 ports
Both targets were part of the (presumably dead) Lyre project
and no longer build. The Mini2440 was much more complete than
the Lyre and doesn't seem terribly difficult to fix up to the
point where it at least builds, if someone still cares -- but
given it is a dev board in a box, it's unlikely it ever saw
much use.

Change-Id: I09745379d28db69ea9aaf77f0a62b049884260e1
2026-02-04 08:56:04 -05:00
Solomon Peachy
1e2950cc6c Revert "make: allow building flat binary plugins on USE_ELF targets"
This reverts commit 91ec6f1e1e.

Reason for revert: Massive sea of red, looks like hosted + sim builds.

Change-Id: I98a3954d68ad2cc521e13c3683bf4a6f45f88b36
2026-02-04 08:49:19 -05:00
Aidan MacDonald
bbe72761a4 ipodnano3g/4g: fix compile issues for normal build
Some purely mechanical fixes to get the normal build
working. Besides missing symbols all the plugins and
codecs build just fine.

Change-Id: I946ba39096a46be8308450bafd51a0995db8e323
2026-02-04 07:51:40 -05:00
Aidan MacDonald
91ec6f1e1e make: allow building flat binary plugins on USE_ELF targets
From what I can see the Creative Zen Vision ports, which
were the only ones to set USE_ELF prior to the Echo R1 port,
do not work except for a bootloader and never even got to
the point of booting Rockbox. This explains why they build
codecs and plugins as ELF binaries, yet there is no code to
load ELF format codecs or plugins.

Anyhow, add a new setting, PLUGIN_USE_ELF, which controls
whether plugins & codecs are left as ELF or converted to
flat binaries. This makes it possible for the Echo R1 to
use the flat binary .rock format, and makes it possible to
have ELF plugins/codecs on targets with non-ELF main binaries.

Seeing as nothing needs ELF plugins/codecs right now, the
new default is to generate them as flat binaries unless
the target requests otherwise.

Change-Id: I9ffae669978de5cc7ad214cd50d97ad6e8938394
2026-02-04 07:32:43 -05:00
Roman Artiukhin
0484b46165 hiby: debug_menu: Add RAM info for hosted targets
Change-Id: I627cdd71fc7c923b2e917c395d6c2d1111147b17
2026-02-04 07:24:37 -05:00
Aidan MacDonald
53862c7eed Remove Sansa View port
It doesn't seem to have been functional ever and currently
doesn't build; eg. the last commit to the LCD driver added
a syntax error, and there's some duplicate functions between
mmu-armv6.S and system-pp502x.c. Doesn't seem worth the
effort to fix.

Change-Id: I82b5bec3ed9686f28aedbe283818af792b96daf4
2026-02-03 22:04:41 +00:00
Aidan MacDonald
1a33d7990a Remove Meizu M3/M6SL/M6SP and Samsung YP-S3 ports
These targets haven't seen any changes since 2008-09
have bitrotted to the point they don't compile anymore.
With only internal NAND flash for storage which doesn't
seem to have ever been accessible from Rockbox, they've
never been usable and there's probably not much point
keeping them around any more.

Change-Id: I2fc63da20682b439126672065ae013044cb2d1c4
2026-02-03 16:32:56 +00:00
Solomon Peachy
19fe7a4915 rbutil: Fix typo in changelog
Change-Id: I8f495f37ea4abb6509e0dcdb26ba38ad94096970
2026-02-03 07:12:14 -05:00
Solomon Peachy
8baeeda23f x1000: Bootloader now probes for the ONFI flash header at multiple addesses
The location (and number of pages) is apparently manufacturer-dependent.
here are some known so far:

Winbond:    page 1
gigadevice: page 4

This info is only queried/dumped when explicitly requested for debug
purposes.

Change-Id: Icc4f9c0d4f2cc9097b2295c8f42a22aab392d0d5
2026-02-03 07:01:10 -05:00
Aidan MacDonald
78542df466 Nuke GDB stub
It looks like the GDB stub only ever worked for the Archos
Recorder and iRiver IFP-7xx, neither of which are in-tree
any more.

Change-Id: If1910675b88b4707d26df9bc095818902af2d25b
2026-02-03 10:55:53 +00:00
Aidan MacDonald
2429e117d0 Replace all uses of PLUGIN_USE_IRAM with USE_IRAM
PLUGIN_USE_IRAM is almost equivalent to USE_IRAM except
that USE_IRAM might be defined in core, but not plugins.
All remaining uses of PLUGIN_USE_IRAM are inside plugins,
however, so there is no point keeping both defines around.

Change-Id: I6902c85651f3d82b7d19ea32eaa60fc5c19eded7
2026-02-02 17:11:04 -05:00
Aidan MacDonald
34525a18dc plugins: drop audio_hard_stop() from plugin API
Commit 01f96e40a7 ("mpegplayer: remove IRAM save/restore hack")
removed the only user.

Change-Id: Ia6281159387ab984906443f047b849614d92ef9e
2026-02-02 16:27:25 -05:00
Aidan MacDonald
828fd7941f x1000: ensure sections are 4-byte aligned
The section copy loops in crt0.S rely on sections starting
and ending on 4-byte aligned addresses. If the last variable
alloacted in the BSS section isn't a multiple of 4 bytes,
then _bssend can get misaligned and break the copy loop.

This problem was masked by -fcommon since COMMON variables
go at the end of the BSS section, and they were for the most
part a multiple of 4 bytes. The switch to -fno-common broke
the bootloader because with COMMON gone, the last thing in
BSS was a 1-byte variable in led.o. The main binary appears
to have had the correct alignments by sheer luck.

Change-Id: I21ee3653d89d1607a2f458c457f1a51e33c22f05
2026-02-02 20:50:05 +00:00
Solomon Peachy
3a68848099 erosqnative: Rename bootloader entries for stock firmware / recovery
"Aigo Player" => "Hiby Player"
"Aigo Recovery" => "HibyOS Recovery"

All four (so far) brandings of the "erosq/k" family utilize the same
HibyOS+HibyPlayer platform.  This platform is additionally shared by
nearly all X1000-based devices.

...So let's call it what it is.

Change-Id: I986ed202ad0ca13b0650be87cf5b612c9648e571
2026-02-02 08:27:43 -05:00
Solomon Peachy
84e5d193fb x1000: Turn on QSPI mode for W25N01GV and XT26G01C flashes
With the QSPI TMODE fix, they are confirmed working

Change-Id: Ic47b13312299bab8a632ebf517015362a0cb6a49
2026-02-02 08:22:46 -05:00
Solomon Peachy
9f216921b8 x1000: Correct SFC TMODE bit definitions
We were using a definition of 0b100 for "Quad Input / Quad Output" mode
which is marked as "reserved" in the X1000 TRM.  The correct value is
0b101.

Somehow this "worked" for some devices but failed for others?

Credit for this discovery+fix goes to forum user ZappBranigan2972

Change-Id: Iedbd2d1b6da55113e266ad8aa51fc9c3130bf2b8
2026-02-02 08:22:46 -05:00
Solomon Peachy
78778d6e6f misc: Correct inifinite loop when volume has a fractional component
Introduced in 3f2ca2024

Purely a theretical problem but we should fix it regardless

Change-Id: Ifeb4e1aeb3291c723b2addf2f2d391775db57b03
2026-02-02 08:22:46 -05:00
Aidan MacDonald
3f2ca20245 misc: fix issues with perceptual volume calculations
The constant NVOL_FACTOR used in the calculations needs
to be scaled if the target doesn't represent volumes in
1/10th dB units (ie. most targets). Using a wrong factor
caused the results to be slightly "off", with wide steps
between points on the upper end of the volume curve.

Drop use_linear_dB_scale() because the magic constant
involved has a similar problem (and we don't use this
function anyway).

Also, make sure to account for the guaranteed min/max
points when generating the normalized volume table to
avoid sometimes generating one or two extra volume steps
very close to the min/max volumes.

Change-Id: I5c15809a7306f14bb1befe6d29a5e2b5b0974eaa
2026-02-01 17:33:08 +00:00
Aidan MacDonald
ad9471be3b echoplayer: add shadow framebuffer to avoid tearing
Using a simple memcpy to a separate framebuffer prevents
objectionable levels of flickering caused by scanning out
the main framebuffer while it's modified between updates.

With optimized memcpy, copying the whole framebuffer takes
about 260us at maximum CPU+bus frequency. Using DMA would
likely be a bit faster and more power-efficient, but that
can be left as a future optimization.

Change-Id: Ia6dc36d797cdb7a5f6663078c0ecce661267bedf
2026-02-01 10:18:20 -05:00
Aidan MacDonald
7adb9cd1b4 arm: add optimized ARMv7-M memcpy implementation
This assembly implementation is marginally faster than
the non-size-optimized C version for large copies, but
is around half the code size.

Unaligned loads/stores will be used on platforms that
support it: though slower than aligned accesses, this
is still faster than copying byte-by-byte and has the
advantage of simplicity and small code size.

Change-Id: Ieee73d7557318d510601583f190ef3aa018c9121
2026-02-01 10:02:55 -05:00
Aidan MacDonald
01f96e40a7 mpegplayer: remove IRAM save/restore hack
On targets where plugins can use IRAM, mpegplayer copies
its own IRAM region to main memory before enabling voiced
menus and then copies it back when exiting the menu.

I'm reasonably certain this is unnecessary because the
core IRAM area is completely separate from plugin IRAM
(which is the same memory as codec IRAM). If they _did_
conflict, then we'd expect to see massive problems with
voiced menus during normal playback since most codecs
make fairly heavy use of IRAM.

There are two other reasons to get rid of this hack:
(1) it's ugly, and (2) it will not work on targets with
"split" IRAM like on the STM32H743 where the fastest
code/data memories are separate.

Change-Id: Id8656539c7cafb724691494c54a07448fbcf8129
2026-02-01 09:55:04 -05:00
Solomon Peachy
3083277ee4 rbutil: Don't forget to bump the version for MacOS builds
(And a minor correction to the changelog)

Change-Id: Ic00e32444ee815b214755c8a17a511ce4310caca
2026-02-01 09:35:08 -05:00
Solomon Peachy
c458f4663c x1000: Do not use QSPI mode on the XT26G01C flash
Either QSPI is not wired up, or there is some other issue preventing
them from working correctly.

If this doesn't show any more issues then we should be able to produce a
new set of bootloader builds enabling support for the HifiWalker H2 v2.3
variant. We will eventually find out if other OEMs have chosen dfferent
flash parts for their specific ErosQ/K variations.

(Credit for these experiments goes to the forum users
 ZappBranigan2972 and gonzyfrigus)

Change-Id: I349f4bbac509010753ac2ad24ad42a234cccdea5
2026-02-01 07:45:29 -05:00
Roman Artiukhin
98b25f146b rockboxdev: glib: drop tests and docs from autreconf
Removes dependency on distuitls (ModuleNotFoundError: No module named 'distutils');
gtk-doc-tools still required;

Change-Id: I50f69411d146b5b9b9c496b3507bcef5bb1638bc
2026-01-31 15:48:23 +02:00
Roman Artiukhin
3bfce366ac hiby: r1_patcher: stop script execution on any error
Change-Id: Ic683b8ed155a5e9d2779d40a3b7673579056d9b1
2026-01-31 13:26:35 +02:00
Solomon Peachy
ee3e630efa rbutil: Upgrade bundled quazip from 0.9.1 to 1.1
Just reducing the delta a little bit.  Later versions are
more complicated.

Change-Id: If0452a529b840383333062ec2604ff257646627a
2026-01-30 20:42:21 -05:00
Solomon Peachy
e11a449031 rbutil: Pull the internal/external QUAZIP library stuff into the toplevel
Prevents a build failure when we have to build quazip as part of the build

Change-Id: I274cd4c358c50152bcfea2e33ad580fac0277e4a
2026-01-30 15:08:23 -05:00
Christian Soffke
11263d73af imageviewer: add back semicolon
accidentally removed in 3c6b9bb

file isn't normally used, so there was no error

Change-Id: I65cc59bfcb3c59678a990b9804070d518318b016
2026-01-30 14:12:57 +01:00
Christian Soffke
2556cfc7b3 usb: fix hang when disconnecting from USB
regression introduced in 33d0a3efa3

Change-Id: I0ded61d70a09b27820e65979381d2c38410d2923
2026-01-30 13:55:30 +01:00
Solomon Peachy
c23e1ba09a x1000: Drop XT26G01C flash clock speed to 104MHz as per datasheet
Change-Id: I17da992c608a6ad1340c500c34d42009eccf6fbb
2026-01-30 06:07:00 -05:00
Solomon Peachy
5563643b38 x1000: Bump NAND_DRV_MAXPAGESIZE to (2048+128)
X6G01C flash has 128B of ECC data per page, overruning our
buffer.

Change-Id: I8caa8bec6291f1b3391af9c7da1ee22805ff01e2
2026-01-30 06:07:00 -05:00
Solomon Peachy
c826554067 manual: Minor correction to the list of ErosQ/K hardare revisions
Change-Id: I4691d11b5c26a1b0e09e62ccb62e0661a09851b9
2026-01-30 06:06:59 -05:00
375 changed files with 2051 additions and 25182 deletions

View file

@ -215,14 +215,6 @@ keymaps/keymap-mr500.c
keymaps/keymap-mr100.c keymaps/keymap-mr100.c
#elif CONFIG_KEYPAD == COWON_D2_PAD #elif CONFIG_KEYPAD == COWON_D2_PAD
keymaps/keymap-cowond2.c keymaps/keymap-cowond2.c
#elif CONFIG_KEYPAD == MEIZU_M6SL_PAD
keymaps/keymap-meizu-m6sl.c
#elif CONFIG_KEYPAD == MEIZU_M6SP_PAD
keymaps/keymap-meizu-m6sp.c
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
keymaps/keymap-creativezvm.c
#elif CONFIG_KEYPAD == CREATIVEZV_PAD
keymaps/keymap-creativezv.c
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI2_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI2_PAD
keymaps/keymap-zenxfi2.c keymaps/keymap-zenxfi2.c
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
@ -244,8 +236,6 @@ keymaps/keymap-ondavx767.c
#elif (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) \ #elif (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) \
|| (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD) || (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD)
keymaps/keymap-yh8xx_yh9xx.c keymaps/keymap-yh8xx_yh9xx.c
#elif CONFIG_KEYPAD == MINI2440_PAD
keymaps/keymap-mini2440.c
#elif CONFIG_KEYPAD == PBELL_VIBE500_PAD #elif CONFIG_KEYPAD == PBELL_VIBE500_PAD
keymaps/keymap-vibe500.c keymaps/keymap-vibe500.c
#elif CONFIG_KEYPAD == MPIO_HD200_PAD #elif CONFIG_KEYPAD == MPIO_HD200_PAD

View file

@ -143,6 +143,10 @@
#include "iap.h" #include "iap.h"
#endif #endif
#ifdef HIBY_LINUX
#include <sys/sysinfo.h>
#endif
#define SCREEN_MAX_CHARS (LCD_WIDTH / SYSFONT_WIDTH) #define SCREEN_MAX_CHARS (LCD_WIDTH / SYSFONT_WIDTH)
static const char* threads_getname(int selected_item, void *data, static const char* threads_getname(int selected_item, void *data,
@ -2597,31 +2601,6 @@ static bool dbg_isp1583(void)
} }
#endif #endif
#if defined(CREATIVE_ZVx) && !defined(SIMULATOR)
extern int pic_dbg_num_items(void);
extern const char* pic_dbg_item(int selected_item, void *data,
char *buffer, size_t buffer_len);
static int pic_action_callback(int action, struct gui_synclist *lists)
{
(void)lists;
if (action == ACTION_NONE)
action = ACTION_REDRAW;
return action;
}
static bool dbg_pic(void)
{
struct simplelist_info pic;
pic.scroll_all = true;
simplelist_info_init(&pic, "PIC", pic_dbg_num_items(), NULL);
pic.timeout = HZ/100;
pic.get_name = pic_dbg_item;
pic.action_callback = pic_action_callback;
return simplelist_show_list(&pic);
}
#endif
#if defined(HAVE_BOOTDATA) && !defined(SIMULATOR) #if defined(HAVE_BOOTDATA) && !defined(SIMULATOR)
static bool dbg_boot_data(void) static bool dbg_boot_data(void)
{ {
@ -2800,6 +2779,55 @@ static bool dbg_bootflash_dump(void) {
} }
#endif #endif
#ifdef HIBY_LINUX
static bool view_ram_info(void)
{
struct simplelist_info info;
simplelist_info_init(&info, "RAM Info", 0, NULL);
simplelist_reset_lines();
simplelist_addline("Rockbox: %d MB", MEMORYSIZE);
struct sysinfo sys_info;
if (sysinfo(&sys_info) == 0) {
long total_ram = sys_info.totalram * sys_info.mem_unit / 1024 / 1024;
long free_ram = sys_info.freeram * sys_info.mem_unit / 1024 / 1024;
long buffer_ram = sys_info.bufferram * sys_info.mem_unit / 1024 / 1024;
simplelist_addline("Total RAM: %ld MB", total_ram);
simplelist_addline("Free RAM: %ld MB", free_ram);
simplelist_addline("Buffer RAM: %ld MB", buffer_ram);
/* Try to read MemAvailable from /proc/meminfo for a better "free" estimate */
FILE *fp = fopen("/proc/meminfo", "r");
if (fp) {
char line[128];
long mem_avail = -1;
long cached = -1;
while (fgets(line, sizeof(line), fp)) {
if (sscanf(line, "MemAvailable: %ld kB", &mem_avail) == 1) {
mem_avail /= 1024;
}
else if (sscanf(line, "Cached: %ld kB", &cached) == 1) {
cached /= 1024;
}
}
fclose(fp);
if (mem_avail != -1) {
/* Estimate of how much memory is available for starting new applications */
simplelist_addline("Available: %ld MB", mem_avail);
}
if (cached != -1) {
/* Memory used by the page cache. */
simplelist_addline("Cached: %ld MB", cached);
}
}
}
return simplelist_show_list(&info);
}
#endif
/****** The menu *********/ /****** The menu *********/
static const struct { static const struct {
unsigned char *desc; /* string or ID */ unsigned char *desc; /* string or ID */
@ -2839,6 +2867,9 @@ static const struct {
#ifdef __linux__ #ifdef __linux__
{ "View CPU stats", dbg_cpuinfo }, { "View CPU stats", dbg_cpuinfo },
#endif #endif
#ifdef HIBY_LINUX
{ "View RAM info", view_ram_info },
#endif
#if (CONFIG_BATTERY_MEASURE != 0) && !defined(SIMULATOR) #if (CONFIG_BATTERY_MEASURE != 0) && !defined(SIMULATOR)
{ "View battery", view_battery }, { "View battery", view_battery },
#endif #endif
@ -2886,9 +2917,6 @@ static const struct {
#if CONFIG_USBOTG == USBOTG_ISP1583 #if CONFIG_USBOTG == USBOTG_ISP1583
{ "View ISP1583 info", dbg_isp1583 }, { "View ISP1583 info", dbg_isp1583 },
#endif #endif
#if defined(CREATIVE_ZVx) && !defined(SIMULATOR)
{ "View PIC info", dbg_pic },
#endif
#ifdef ROCKBOX_HAS_LOGF #ifdef ROCKBOX_HAS_LOGF
{"Show Log File", logfdisplay }, {"Show Log File", logfdisplay },
{"Dump Log File", logfdump }, {"Dump Log File", logfdump },

View file

@ -97,19 +97,23 @@ static bool poll_cancel_action(int operation, struct file_op_params *param)
{ {
int total_shft = (int) (param->total_size >> 15); int total_shft = (int) (param->total_size >> 15);
int current_shft = (int) (param->processed_size >> 15); int current_shft = (int) (param->processed_size >> 15);
const char *unit_str = str(LANG_MEBIBYTE);
splash_progress(current_shft, total_shft, splash_progress(current_shft, total_shft,
"%s %s (%d MiB)\n%d MiB", "%s %s (%d %s)\n%d %s",
op_str, param->toplevel_name, op_str, param->toplevel_name,
total_shft >> 5, current_shft >> 5); total_shft >> 5, unit_str,
current_shft >> 5, unit_str);
} }
else if (param->total_size >= 1024) else if (param->total_size >= 1024)
{ {
int total_kib = (int) (param->total_size >> 10); int total_kib = (int) (param->total_size >> 10);
int current_kib = (int) (param->processed_size >> 10); int current_kib = (int) (param->processed_size >> 10);
const char *unit_str = str(LANG_KIBIBYTE);
splash_progress(current_kib, total_kib, splash_progress(current_kib, total_kib,
"%s %s (%d KiB)\n%d KiB", "%s %s (%d %s)\n%d %s",
op_str, param->toplevel_name, op_str, param->toplevel_name,
total_kib, current_kib); total_kib, unit_str,
current_kib, unit_str);
} }
} }
return ACTION_STD_CANCEL == get_action(CONTEXT_STD, TIMEOUT_NOBLOCK); return ACTION_STD_CANCEL == get_action(CONTEXT_STD, TIMEOUT_NOBLOCK);

View file

@ -1,256 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
/* Button Code Definitions for the Creative Zen Vision target */
/* Copied from ZVM target for now... */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.h"
/*
* The format of the list is as follows
* { Action Code, Button code, Prereq button code }
* if there's no need to check the previous button's value, use BUTTON_NONE
* Insert LAST_ITEM_IN_LIST at the end of each mapping
*/
/* CONTEXT_CUSTOM's used in this file...
CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
CONTEXT_CUSTOM|CONTEXT_SETTINGS = the direction keys for the eq/col picker screens
i.e where up/down is inc/dec
CONTEXT_SETTINGS = up/down is prev/next, l/r is inc/dec
*/
static const struct button_mapping button_context_standard[] = {
{ ACTION_STD_PREV, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
{ ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
{ ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_standard */
static const struct button_mapping button_context_wps[] = {
{ ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
{ ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
//{ ACTION_WPS_ABSETB_NEXTDIR,BUTTON_RIGHT, BUTTON_CUSTOM },
//{ ACTION_WPS_ABSETA_PREVDIR,BUTTON_LEFT, BUTTON_CUSTOM },
//{ ACTION_WPS_ABRESET, BUTTON_CUSTOM|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
{ ACTION_WPS_PITCHSCREEN, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
{ ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE },
{ ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_WPS_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
{ ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_BACK },
LAST_ITEM_IN_LIST
}; /* button_context_wps */
static const struct button_mapping button_context_list[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_list */
static const struct button_mapping button_context_tree[] = {
{ ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE },
{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_TREE_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
}; /* button_context_tree */
static const struct button_mapping button_context_listtree_scroll_without_combo[] = {
{ ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
{ ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
};
static const struct button_mapping button_context_settings[] = {
{ ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
{ ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
{ ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
{ ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings */
static const struct button_mapping button_context_settings_right_is_inc[] = {
{ ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settingsgraphical */
static const struct button_mapping button_context_yesno[] = {
{ ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings_yesno */
static const struct button_mapping button_context_colorchooser[] = {
{ ACTION_STD_OK, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_colorchooser */
static const struct button_mapping button_context_eq[] = {
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_eq */
/** Bookmark Screen **/
static const struct button_mapping button_context_bmark[] = {
{ ACTION_BMS_DELETE, BUTTON_BACK, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_bmark */
static const struct button_mapping button_context_time[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
}; /* button_context_time */
static const struct button_mapping button_context_quickscreen[] = {
{ ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
{ ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_quickscreen */
static const struct button_mapping button_context_pitchscreen[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_pitchcreen */
static const struct button_mapping button_context_keyboard[] = {
{ ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_CUSTOM, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_CUSTOM|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
{ ACTION_KBD_PAGE_FLIP, BUTTON_BACK|BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_KBD_ABORT, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_MORSE_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_keyboard */
const struct button_mapping* get_context_mapping(int context)
{
switch (context&~CONTEXT_REMOTE)
{
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU:
case CONTEXT_TREE:
return button_context_listtree_scroll_without_combo;
case CONTEXT_CUSTOM|CONTEXT_TREE:
return button_context_tree;
case CONTEXT_SETTINGS:
return button_context_settings;
case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
return button_context_settings_right_is_inc;
case CONTEXT_SETTINGS_COLOURCHOOSER:
return button_context_colorchooser;
case CONTEXT_SETTINGS_EQ:
return button_context_eq;
case CONTEXT_SETTINGS_TIME:
return button_context_time;
case CONTEXT_YESNOSCREEN:
return button_context_yesno;
case CONTEXT_BOOKMARKSCREEN:
return button_context_bmark;
case CONTEXT_QUICKSCREEN:
return button_context_quickscreen;
case CONTEXT_PITCHSCREEN:
return button_context_pitchscreen;
case CONTEXT_KEYBOARD:
case CONTEXT_MORSE_INPUT:
return button_context_keyboard;
}
return button_context_standard;
}

View file

@ -1,255 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 by Maurus Cuelenaere
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
/* Button Code Definitions for the Creative Zen Vision:M target */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.h"
/*
* The format of the list is as follows
* { Action Code, Button code, Prereq button code }
* if there's no need to check the previous button's value, use BUTTON_NONE
* Insert LAST_ITEM_IN_LIST at the end of each mapping
*/
/* CONTEXT_CUSTOM's used in this file...
CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
CONTEXT_CUSTOM|CONTEXT_SETTINGS = the direction keys for the eq/col picker screens
i.e where up/down is inc/dec
CONTEXT_SETTINGS = up/down is prev/next, l/r is inc/dec
*/
static const struct button_mapping button_context_standard[] = {
{ ACTION_STD_PREV, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN|BUTTON_REL, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
{ ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
{ ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_standard */
static const struct button_mapping button_context_wps[] = {
{ ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
{ ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
//{ ACTION_WPS_ABSETB_NEXTDIR,BUTTON_RIGHT, BUTTON_CUSTOM },
//{ ACTION_WPS_ABSETA_PREVDIR,BUTTON_LEFT, BUTTON_CUSTOM },
//{ ACTION_WPS_ABRESET, BUTTON_CUSTOM|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
{ ACTION_WPS_PITCHSCREEN, BUTTON_BACK|BUTTON_REPEAT, BUTTON_BACK },
{ ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_WPS_VIEW_PLAYLIST, BUTTON_POWER, BUTTON_NONE },
{ ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_WPS_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
{ ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_BACK },
LAST_ITEM_IN_LIST
}; /* button_context_wps */
static const struct button_mapping button_context_list[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_list */
static const struct button_mapping button_context_tree[] = {
{ ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE },
{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_TREE_HOTKEY, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
}; /* button_context_tree */
static const struct button_mapping button_context_listtree_scroll_without_combo[] = {
{ ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
{ ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
};
static const struct button_mapping button_context_settings[] = {
{ ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP },
{ ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_DOWN },
{ ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
{ ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings */
static const struct button_mapping button_context_settings_right_is_inc[] = {
{ ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settingsgraphical */
static const struct button_mapping button_context_yesno[] = {
{ ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings_yesno */
static const struct button_mapping button_context_colorchooser[] = {
{ ACTION_STD_OK, BUTTON_BACK|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_colorchooser */
static const struct button_mapping button_context_eq[] = {
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_eq */
/** Bookmark Screen **/
static const struct button_mapping button_context_bmark[] = {
{ ACTION_BMS_DELETE, BUTTON_BACK, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_bmark */
static const struct button_mapping button_context_time[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
}; /* button_context_time */
static const struct button_mapping button_context_quickscreen[] = {
{ ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
{ ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_quickscreen */
static const struct button_mapping button_context_pitchscreen[] = {
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_pitchcreen */
static const struct button_mapping button_context_keyboard[] = {
{ ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_CUSTOM, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_CUSTOM|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
{ ACTION_KBD_PAGE_FLIP, BUTTON_BACK|BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_KBD_ABORT, BUTTON_BACK|BUTTON_REL, BUTTON_BACK },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_MORSE_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_keyboard */
const struct button_mapping* get_context_mapping(int context)
{
switch (context&~CONTEXT_REMOTE)
{
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU:
case CONTEXT_TREE:
return button_context_listtree_scroll_without_combo;
case CONTEXT_CUSTOM|CONTEXT_TREE:
return button_context_tree;
case CONTEXT_SETTINGS:
return button_context_settings;
case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
return button_context_settings_right_is_inc;
case CONTEXT_SETTINGS_COLOURCHOOSER:
return button_context_colorchooser;
case CONTEXT_SETTINGS_EQ:
return button_context_eq;
case CONTEXT_SETTINGS_TIME:
return button_context_time;
case CONTEXT_YESNOSCREEN:
return button_context_yesno;
case CONTEXT_BOOKMARKSCREEN:
return button_context_bmark;
case CONTEXT_QUICKSCREEN:
return button_context_quickscreen;
case CONTEXT_PITCHSCREEN:
return button_context_pitchscreen;
case CONTEXT_KEYBOARD:
case CONTEXT_MORSE_INPUT:
return button_context_keyboard;
}
return button_context_standard;
}

View file

@ -57,6 +57,7 @@ static const struct button_mapping button_context_wps[] = {
{ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE}, {ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE},
{ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT}, {ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT},
{ACTION_WPS_QUICKSCREEN, BUTTON_B, BUTTON_NONE}, {ACTION_WPS_QUICKSCREEN, BUTTON_B, BUTTON_NONE},
{ACTION_WPS_MENU, BUTTON_Y, BUTTON_NONE},
LAST_ITEM_IN_LIST LAST_ITEM_IN_LIST
}; /* button_context_wps */ }; /* button_context_wps */

View file

@ -1,299 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2006 Jonathan Gordon
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
/* Button Code Definitions for the toshiba gigabeat target */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.h"
/*
* The format of the list is as follows
* { Action Code, Button code, Prereq button code }
* if there's no need to check the previous button's value, use BUTTON_NONE
* Insert LAST_ITEM_IN_LIST at the end of each mapping
*/
/* CONTEXT_CUSTOM's used in this file...
CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
CONTEXT_CUSTOM|CONTEXT_SETTINGS = the direction keys for the eq/col picker screens
i.e where up/down is inc/dec
CONTEXT_SETTINGS = up/down is prev/next, l/r is inc/dec
*/
static const struct button_mapping button_context_standard[] = {
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT },
{ ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
{ ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_standard */
static const struct button_mapping button_context_wps[] = {
{ ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_WPS_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
{ ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
{ ACTION_WPS_ABSETB_NEXTDIR, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_WPS_ABSETA_PREVDIR, BUTTON_PLAY|BUTTON_LEFT, BUTTON_NONE },
{ ACTION_WPS_ABRESET, BUTTON_PLAY|BUTTON_SELECT, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
{ ACTION_WPS_PITCHSCREEN, BUTTON_PLAY|BUTTON_UP, BUTTON_PLAY },
{ ACTION_WPS_VIEW_PLAYLIST, BUTTON_PLAY|BUTTON_DOWN, BUTTON_PLAY },
{ ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_WPS_HOTKEY, BUTTON_PLAY|BUTTON_MENU, BUTTON_NONE },
{ ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
LAST_ITEM_IN_LIST
}; /* button_context_wps */
static const struct button_mapping button_context_list[] = {
{ ACTION_LISTTREE_PGUP, BUTTON_PLAY|BUTTON_UP, BUTTON_NONE },
{ ACTION_LISTTREE_PGUP, BUTTON_PLAY|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_LISTTREE_PGDOWN, BUTTON_PLAY|BUTTON_DOWN, BUTTON_NONE },
{ ACTION_LISTTREE_PGDOWN, BUTTON_PLAY|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_list */
static const struct button_mapping button_context_tree[] = {
{ ACTION_TREE_WPS, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_TREE_STOP, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_TREE_HOTKEY, BUTTON_PLAY|BUTTON_MENU, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
}; /* button_context_tree */
static const struct button_mapping button_context_listtree_scroll_with_combo[] = {
{ ACTION_NONE, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_TREE_PGLEFT, BUTTON_PLAY|BUTTON_LEFT, BUTTON_NONE },
{ ACTION_TREE_ROOT_INIT, BUTTON_PLAY|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_PLAY|BUTTON_LEFT },
{ ACTION_TREE_PGLEFT, BUTTON_PLAY|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_TREE_PGRIGHT, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_TREE_PGRIGHT, BUTTON_PLAY|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
};
static const struct button_mapping button_context_listtree_scroll_without_combo[] = {
{ ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
{ ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
};
static const struct button_mapping button_context_settings[] = {
{ ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings */
static const struct button_mapping button_context_settings_right_is_inc[] = {
{ ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settingsgraphical */
static const struct button_mapping button_context_yesno[] = {
{ ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings_yesno */
static const struct button_mapping button_context_colorchooser[] = {
{ ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_colorchooser */
static const struct button_mapping button_context_eq[] = {
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_eq */
/** Bookmark Screen **/
static const struct button_mapping button_context_bmark[] = {
{ ACTION_BMS_DELETE, BUTTON_PLAY, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_bmark */
static const struct button_mapping button_context_time[] = {
{ ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_PLAY, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
}; /* button_context_time */
static const struct button_mapping button_context_quickscreen[] = {
{ ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
{ ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_quickscreen */
static const struct button_mapping button_context_pitchscreen[] = {
{ ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
{ ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
{ ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
{ ACTION_PS_TOGGLE_MODE, BUTTON_MENU, BUTTON_NONE },
{ ACTION_PS_RESET, BUTTON_PLAY, BUTTON_NONE },
{ ACTION_PS_EXIT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_FASTER, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_pitchcreen */
static const struct button_mapping button_context_keyboard[] = {
{ ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_PLAY|BUTTON_LEFT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_PLAY|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY|BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_PLAY|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
{ ACTION_KBD_PAGE_FLIP, BUTTON_PLAY|BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_DONE, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
{ ACTION_KBD_ABORT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
// { ACTION_KBD_MORSE_INPUT, BUTTON_PLAY|BUTTON_POWER, BUTTON_NONE },
{ ACTION_KBD_MORSE_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_keyboard */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
{
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU:
case CONTEXT_TREE:
if (global_settings.hold_lr_for_scroll_in_list)
return button_context_listtree_scroll_without_combo;
else
return button_context_listtree_scroll_with_combo;
case CONTEXT_CUSTOM|CONTEXT_TREE:
return button_context_tree;
case CONTEXT_SETTINGS:
return button_context_settings;
case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
return button_context_settings_right_is_inc;
case CONTEXT_SETTINGS_COLOURCHOOSER:
return button_context_colorchooser;
case CONTEXT_SETTINGS_EQ:
return button_context_eq;
case CONTEXT_SETTINGS_TIME:
return button_context_time;
case CONTEXT_YESNOSCREEN:
return button_context_yesno;
case CONTEXT_BOOKMARKSCREEN:
return button_context_bmark;
case CONTEXT_QUICKSCREEN:
return button_context_quickscreen;
case CONTEXT_PITCHSCREEN:
return button_context_pitchscreen;
case CONTEXT_KEYBOARD:
case CONTEXT_MORSE_INPUT:
return button_context_keyboard;
}
return button_context_standard;
}

View file

@ -1,76 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2006 Jonathan Gordon
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
/* Button Code Definitions for the toshiba gigabeat target */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.h"
/*
* The format of the list is as follows
* { Action Code, Button code, Prereq button code }
* if there's no need to check the previous button's value, use BUTTON_NONE
* Insert LAST_ITEM_IN_LIST at the end of each mapping
*/
/* CONTEXT_CUSTOM's used in this file...
CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
CONTEXT_CUSTOM|CONTEXT_SETTINGS = the direction keys for the eq/col picker screens
i.e where up/down is inc/dec
CONTEXT_SETTINGS = up/down is prev/next, l/r is inc/dec
*/
/* copied from Meizu M6SP keymap */
static const struct button_mapping button_context_standard[] = {
#if 0 /* disabled for now, there is no BUTTON_UP/DOWN yet */
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
#endif
{ ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT },
{ ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
{ ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_standard */
const struct button_mapping* get_context_mapping(int context)
{
(void)context;
/* TODO add more button contexts */
return button_context_standard;
}

View file

@ -1,380 +0,0 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2009 Bob Cousins
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
/* Button Code Definitions for the Mini2440 target
* based on Toshiba Gigabeat F keymap
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "config.h"
#include "action.h"
#include "button.h"
#include "settings.h"
/*
* The format of the list is as follows
* { Action Code, Button code, Prereq button code }
* if there's no need to check the previous button's value, use BUTTON_NONE
* Insert LAST_ITEM_IN_LIST at the end of each mapping
*/
/* CONTEXT_CUSTOM's used in this file...
CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
CONTEXT_CUSTOM|CONTEXT_SETTINGS = the direction keys for the eq/col picker screens
i.e where up/down is inc/dec
CONTEXT_SETTINGS = up/down is prev/next, l/r is inc/dec
*/
static const struct button_mapping button_context_standard[] = {
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
{ ACTION_STD_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT,BUTTON_SELECT },
{ ACTION_STD_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_STD_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
{ ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_standard */
static const struct button_mapping button_context_wps[] = {
{ ACTION_WPS_PLAY, BUTTON_A|BUTTON_REL, BUTTON_A },
{ ACTION_WPS_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
{ ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
{ ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
{ ACTION_WPS_ABSETB_NEXTDIR,BUTTON_A|BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_WPS_ABSETA_PREVDIR,BUTTON_A|BUTTON_LEFT, BUTTON_NONE },
{ ACTION_WPS_ABRESET, BUTTON_A|BUTTON_SELECT, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_WPS_PITCHSCREEN, BUTTON_A|BUTTON_UP, BUTTON_A },
{ ACTION_WPS_VIEW_PLAYLIST, BUTTON_A|BUTTON_DOWN, BUTTON_NONE },
{ ACTION_WPS_QUICKSCREEN, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
{ ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
{ ACTION_WPS_CONTEXT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_SELECT },
{ ACTION_WPS_HOTKEY, BUTTON_A|BUTTON_MENU, BUTTON_NONE },
{ ACTION_WPS_BROWSE, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT },
LAST_ITEM_IN_LIST
}; /* button_context_wps */
static const struct button_mapping button_context_list[] = {
{ ACTION_LISTTREE_PGUP, BUTTON_A|BUTTON_UP, BUTTON_NONE },
{ ACTION_LISTTREE_PGUP, BUTTON_A|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_LISTTREE_PGDOWN, BUTTON_A|BUTTON_DOWN, BUTTON_NONE },
{ ACTION_LISTTREE_PGDOWN, BUTTON_A|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
#ifdef HAVE_VOLUME_IN_LIST
{ ACTION_LIST_VOLUP, BUTTON_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_LIST_VOLUP, BUTTON_VOL_UP, BUTTON_NONE },
{ ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN, BUTTON_NONE },
{ ACTION_LIST_VOLDOWN, BUTTON_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
#endif
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_list */
static const struct button_mapping button_context_tree[] = {
{ ACTION_TREE_WPS, BUTTON_A|BUTTON_REL, BUTTON_A },
{ ACTION_TREE_STOP, BUTTON_POWER, BUTTON_NONE },
{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
{ ACTION_TREE_STOP, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_TREE_HOTKEY, BUTTON_A|BUTTON_MENU, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST)
}; /* button_context_tree */
static const struct button_mapping button_context_listtree_scroll_with_combo[] = {
{ ACTION_NONE, BUTTON_A, BUTTON_NONE },
{ ACTION_TREE_PGLEFT, BUTTON_A|BUTTON_LEFT, BUTTON_NONE },
{ ACTION_TREE_ROOT_INIT, BUTTON_A|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_A|BUTTON_LEFT },
{ ACTION_TREE_PGLEFT, BUTTON_A|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_TREE_PGRIGHT, BUTTON_A|BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_TREE_PGRIGHT, BUTTON_A|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
};
static const struct button_mapping button_context_listtree_scroll_without_combo[] = {
{ ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
{ ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
{ ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
{ ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
};
static const struct button_mapping button_context_settings[] = {
{ ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings */
static const struct button_mapping button_context_settings_right_is_inc[] = {
{ ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settingsgraphical */
static const struct button_mapping button_context_yesno[] = {
{ ACTION_YESNO_ACCEPT, BUTTON_SELECT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_settings_yesno */
static const struct button_mapping button_context_colorchooser[] = {
{ ACTION_STD_OK, BUTTON_A|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_colorchooser */
static const struct button_mapping button_context_eq[] = {
{ ACTION_STD_OK, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_SETTINGS),
}; /* button_context_eq */
/** Bookmark Screen **/
static const struct button_mapping button_context_bmark[] = {
{ ACTION_BMS_DELETE, BUTTON_A, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
}; /* button_context_bmark */
static const struct button_mapping button_context_time[] = {
{ ACTION_STD_CANCEL, BUTTON_POWER, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_A, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS),
}; /* button_context_time */
static const struct button_mapping button_context_quickscreen[] = {
{ ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
{ ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_quickscreen */
static const struct button_mapping button_context_pitchscreen[] = {
{ ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
{ ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
{ ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
{ ACTION_PS_TOGGLE_MODE, BUTTON_MENU, BUTTON_NONE },
{ ACTION_PS_RESET, BUTTON_A, BUTTON_NONE },
{ ACTION_PS_EXIT, BUTTON_POWER, BUTTON_NONE },
{ ACTION_PS_SLOWER, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_PS_FASTER, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
}; /* button_context_pitchcreen */
static const struct button_mapping button_context_keyboard[] = {
{ ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
{ ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_A|BUTTON_LEFT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_LEFT, BUTTON_A|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_A|BUTTON_RIGHT, BUTTON_NONE },
{ ACTION_KBD_CURSOR_RIGHT, BUTTON_A|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_SELECT, BUTTON_SELECT, BUTTON_NONE },
{ ACTION_KBD_PAGE_FLIP, BUTTON_A|BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_DONE, BUTTON_A|BUTTON_REL, BUTTON_A },
{ ACTION_KBD_ABORT, BUTTON_POWER|BUTTON_REL, BUTTON_POWER },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU, BUTTON_NONE },
{ ACTION_KBD_BACKSPACE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
{ ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
{ ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_KBD_MORSE_INPUT, BUTTON_A|BUTTON_POWER, BUTTON_NONE },
{ ACTION_KBD_MORSE_SELECT, BUTTON_SELECT|BUTTON_REL, BUTTON_NONE },
LAST_ITEM_IN_LIST
}; /* button_context_keyboard */
#ifdef HAVE_MINI2440_REMOTE
/*****************************************************************************
* Remote control mappings
*****************************************************************************/
static const struct button_mapping remote_button_context_standard[] = {
{ ACTION_STD_PREV, BUTTON_RC_VOL_UP, BUTTON_NONE },
{ ACTION_STD_PREVREPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_NEXT, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
{ ACTION_STD_NEXTREPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_STD_CANCEL, BUTTON_RC_REW, BUTTON_NONE },
{ ACTION_STD_OK, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
{ ACTION_STD_CONTEXT, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_RC_FF },
{ ACTION_STD_MENU, BUTTON_RC_DSP, BUTTON_NONE },
LAST_ITEM_IN_LIST
};
static const struct button_mapping remote_button_context_wps[] = {
{ ACTION_WPS_PLAY, BUTTON_RC_PLAY, BUTTON_NONE },
{ ACTION_WPS_SKIPNEXT, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF },
{ ACTION_WPS_SKIPPREV, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW },
{ ACTION_WPS_SEEKBACK, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_SEEKFWD, BUTTON_RC_FF|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_STOPSEEK, BUTTON_RC_REW|BUTTON_REL, BUTTON_RC_REW|BUTTON_REPEAT },
{ ACTION_WPS_STOPSEEK, BUTTON_RC_FF|BUTTON_REL, BUTTON_RC_FF|BUTTON_REPEAT },
{ ACTION_WPS_STOP, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
{ ACTION_WPS_MENU, BUTTON_RC_DSP, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
{ ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE },
{ ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
};
static const struct button_mapping remote_button_context_tree[] = {
{ ACTION_TREE_WPS, BUTTON_RC_PLAY|BUTTON_REL, BUTTON_RC_PLAY },
{ ACTION_TREE_STOP, BUTTON_RC_PLAY|BUTTON_REPEAT, BUTTON_RC_PLAY },
{ ACTION_STD_CANCEL, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE },
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
};
static const struct button_mapping* get_context_mapping_remote( int context )
{
context ^= CONTEXT_REMOTE;
switch (context)
{
case CONTEXT_WPS:
return remote_button_context_wps;
case CONTEXT_MAINMENU:
case CONTEXT_TREE:
return remote_button_context_tree;
}
return remote_button_context_standard;
}
#endif
const struct button_mapping* target_get_context_mapping(int context)
{
#ifdef HAVE_MINI2440_REMOTE
if (context&CONTEXT_REMOTE)
return get_context_mapping_remote(context);
#endif
switch (context)
{
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU:
case CONTEXT_TREE:
if (global_settings.hold_lr_for_scroll_in_list)
return button_context_listtree_scroll_without_combo;
else
return button_context_listtree_scroll_with_combo;
case CONTEXT_CUSTOM|CONTEXT_TREE:
return button_context_tree;
case CONTEXT_SETTINGS:
return button_context_settings;
case CONTEXT_CUSTOM|CONTEXT_SETTINGS:
return button_context_settings_right_is_inc;
case CONTEXT_SETTINGS_COLOURCHOOSER:
return button_context_colorchooser;
case CONTEXT_SETTINGS_EQ:
return button_context_eq;
case CONTEXT_SETTINGS_TIME:
return button_context_time;
case CONTEXT_YESNOSCREEN:
return button_context_yesno;
case CONTEXT_BOOKMARKSCREEN:
return button_context_bmark;
case CONTEXT_QUICKSCREEN:
return button_context_quickscreen;
case CONTEXT_PITCHSCREEN:
return button_context_pitchscreen;
case CONTEXT_KEYBOARD:
return button_context_keyboard;
}
return button_context_standard;
}

View file

@ -10142,15 +10142,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Baxuen Mozketa" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Baxuen Mozketa"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Baxuen Mozketa" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Baxuen Mozketa"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10159,15 +10159,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Altuen Mozketa" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Altuen Mozketa"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Altuen Mozketa" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Altuen Mozketa"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9105,15 +9105,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отрязване на баса" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отрязване на баса"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отрязване на баса" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отрязване на баса"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9122,15 +9122,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отрязване на високите" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отрязване на високите"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отрязване на високите" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отрязване на високите"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -10136,15 +10136,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Freq. de tall de baixos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Freq. de tall de baixos"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frequència de tall de baix" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frequència de tall de baix"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10153,15 +10153,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Freq. de tall d'aguts" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Freq. de tall d'aguts"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frequència de tall d'aguts" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frequència de tall d'aguts"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -8889,15 +8889,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低频截止频率" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低频截止频率"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低频截止频率" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低频截止频率"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9095,15 +9095,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高频截止频率" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高频截止频率"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高频截止频率" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高频截止频率"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9160,15 +9160,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低音截斷" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低音截斷"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低音截斷" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低音截斷"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9366,15 +9366,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高音截斷" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高音截斷"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高音截斷" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高音截斷"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -10159,15 +10159,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Oříznutí basů" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Oříznutí basů"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Oříznutí basů" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Oříznutí basů"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10176,15 +10176,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Oříznutí výšek" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Oříznutí výšek"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Oříznutí výšek" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Oříznutí výšek"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9936,15 +9936,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basgrænse" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basgrænse"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basgrænse" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basgrænse"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10142,15 +10142,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgrænse" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgrænse"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgrænse" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgrænse"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9092,15 +9092,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tiefengrenzfrequenz" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tiefengrenzfrequenz"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tiefengrenzfrequenz" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tiefengrenzfrequenz"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9109,15 +9109,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Höhengrenzfrequenz" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Höhengrenzfrequenz"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Höhengrenzfrequenz" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Höhengrenzfrequenz"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9113,15 +9113,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9130,15 +9130,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9284,15 +9284,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9301,15 +9301,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -14919,7 +14919,7 @@
user: core user: core
<source> <source>
*: "Press LEFT to cancel." *: "Press LEFT to cancel."
android,hifietma*,zenvision: "Press BACK to cancel." android,hifietma*: "Press BACK to cancel."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel." cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel."
ihifi760,ihifi960: "Double tap RETURN to cancel." ihifi760,ihifi960: "Double tap RETURN to cancel."
ihifi770,ihifi770c,ihifi800: "Press HOME to cancel." ihifi770,ihifi770c,ihifi800: "Press HOME to cancel."
@ -14934,7 +14934,7 @@
</source> </source>
<dest> <dest>
*: "Press LEFT to cancel." *: "Press LEFT to cancel."
android,hifietma*,zenvision: "Press BACK to cancel." android,hifietma*: "Press BACK to cancel."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel." cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel."
ihifi760,ihifi960: "Double tap RETURN to cancel." ihifi760,ihifi960: "Double tap RETURN to cancel."
ihifi770,ihifi770c,ihifi800: "Press HOME to cancel." ihifi770,ihifi770c,ihifi800: "Press HOME to cancel."
@ -14949,7 +14949,7 @@
</dest> </dest>
<voice> <voice>
*: "Press LEFT to cancel." *: "Press LEFT to cancel."
android,hifietma*,zenvision: "Press BACK to cancel." android,hifietma*: "Press BACK to cancel."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel." cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel."
ihifi760,ihifi960: "Double tap RETURN to cancel." ihifi760,ihifi960: "Double tap RETURN to cancel."
ihifi770,ihifi770c,ihifi800: "Press HOME to cancel." ihifi770,ihifi770c,ihifi800: "Press HOME to cancel."

View file

@ -7392,15 +7392,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frecuencia de corte de bajos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frecuencia de corte de bajos"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frecuencia de corte de bajos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frecuencia de corte de bajos"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -8934,15 +8934,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frec. de corte de agudos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frec. de corte de agudos"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frecuencia de corte de agudos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frecuencia de corte de agudos"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -10127,15 +10127,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basson katkaisu" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basson katkaisu"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basson katkaisu" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basson katkaisu"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10144,15 +10144,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantin katkaisu" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantin katkaisu"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantin katkaisu" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantin katkaisu"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9201,15 +9201,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Fréquence de coupure pour basses" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Fréquence de coupure pour basses"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Fréquence de coupure pour les basses" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Fréquence de coupure pour les basses"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9218,15 +9218,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Fréquence de coupure pour aigus" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Fréquence de coupure pour aigus"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Fréquence de coupure pour les aigus" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Fréquence de coupure pour les aigus"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -5985,15 +5985,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de baixos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de baixos"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de baixos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de baixos"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -11323,15 +11323,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de agudos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de agudos"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de agudos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de agudos"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -10054,15 +10054,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Αποκοπή μπάσων" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Αποκοπή μπάσων"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Αποκοπή μπάσων" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Αποκοπή μπάσων"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10071,15 +10071,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Αποκοπή πρίμων" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Αποκοπή πρίμων"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Αποκοπή πρίμων" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Αποκοπή πρίμων"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -10175,15 +10175,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "חיתוך בס" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "חיתוך בס"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "חיתוך בס" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "חיתוך בס"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10192,15 +10192,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "חיתוך טרבל" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "חיתוך טרבל"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "חיתוך טרבל" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "חיתוך טרבל"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -10139,15 +10139,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Odsijecanje basa" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Odsijecanje basa"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Odsijecanje basa" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Odsijecanje basa"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10156,15 +10156,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Odsijecanje treblea" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Odsijecanje treblea"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Odsijecanje treblea" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Odsijecanje treblea"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9089,15 +9089,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Taglio Bassi" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Taglio Bassi"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Taglio Bassi" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Taglio Bassi"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9106,15 +9106,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Taglio Alti" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Taglio Alti"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Taglio Alti" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Taglio Alti"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9176,15 +9176,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低音域カットオフ" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低音域カットオフ"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低音域カットオフ" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "低音域カットオフ"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9193,15 +9193,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高音域カットオフ" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高音域カットオフ"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高音域カットオフ" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "高音域カットオフ"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9131,15 +9131,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "저음 컷오프" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "저음 컷오프"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "저음 컷오프" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "저음 컷오프"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9148,15 +9148,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "고음 컷오프" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "고음 컷오프"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "고음 컷오프" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "고음 컷오프"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9102,15 +9102,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basu robežfrekvence" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basu robežfrekvence"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basu robežfrekvence" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basu robežfrekvence"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9119,15 +9119,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Augšu robežfrekvence" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Augšu robežfrekvence"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Augšu robežfrekvence" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Augšu robežfrekvence"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -16945,3 +16945,17 @@
general_purpose_led: "Izmantot LED indikatorus" general_purpose_led: "Izmantot LED indikatorus"
</voice> </voice>
</phrase> </phrase>
<phrase>
id: LANG_ANNOUNCE_STATUS
desc: announnnce_status plugin
user: core
<source>
*: "Announce Status"
</source>
<dest>
*: "Paziņot statusu"
</dest>
<voice>
*: "Paziņot statusu"
</voice>
</phrase>

View file

@ -10217,15 +10217,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bosų nukirpimas" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bosų nukirpimas"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bosų nukirpimas" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bosų nukirpimas"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10234,15 +10234,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Aukštų daž. Nukirpimas" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Aukštų daž. Nukirpimas"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Aukštų daž. Nukirpimas" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Aukštų daž. Nukirpimas"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -8922,15 +8922,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Alsó határfrekvencia" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Alsó határfrekvencia"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Alsó határfrekvencia" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Alsó határfrekvencia"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9599,15 +9599,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Magas határfrekvencia" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Magas határfrekvencia"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Magas határfrekvencia" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Magas határfrekvencia"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -14784,7 +14784,7 @@
user: core user: core
<source> <source>
*: "Press LEFT to cancel." *: "Press LEFT to cancel."
android,hifietma*,zenvision: "Press BACK to cancel." android,hifietma*: "Press BACK to cancel."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel." cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Press POWER to cancel."
ihifi760,ihifi960: "Double tap RETURN to cancel." ihifi760,ihifi960: "Double tap RETURN to cancel."
ihifi770,ihifi770c,ihifi800: "Press HOME to cancel." ihifi770,ihifi770c,ihifi800: "Press HOME to cancel."
@ -14799,7 +14799,7 @@
</source> </source>
<dest> <dest>
*: "Nyomja meg a LEFT gombot a megszakításhoz." *: "Nyomja meg a LEFT gombot a megszakításhoz."
android,hifietma*,zenvision: "Nyomja meg a BACK gombot a megszakításhoz." android,hifietma*: "Nyomja meg a BACK gombot a megszakításhoz."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Nyomja meg a POWER gombot a megszakításhoz." cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Nyomja meg a POWER gombot a megszakításhoz."
ihifi760,ihifi960: "Duplán koppintson a RETURN-re megszakításhoz." ihifi760,ihifi960: "Duplán koppintson a RETURN-re megszakításhoz."
ihifi770,ihifi770c,ihifi800: "Nyomja meg a HOME gombot a megszakításhoz." ihifi770,ihifi770c,ihifi800: "Nyomja meg a HOME gombot a megszakításhoz."
@ -14814,7 +14814,7 @@
</dest> </dest>
<voice> <voice>
*: "Nyomja meg a LEFT gombot a megszakításhoz." *: "Nyomja meg a LEFT gombot a megszakításhoz."
android,hifietma*,zenvision: "Nyomja meg a BACK gombot a megszakításhoz." android,hifietma*: "Nyomja meg a BACK gombot a megszakításhoz."
cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Nyomja meg a POWER gombot a megszakításhoz." cowond2,creativezenxfi2,ibassodx50,ibassodx90,mrobe500,ondavx747: "Nyomja meg a POWER gombot a megszakításhoz."
ihifi760,ihifi960: "Duplán koppintson a RETURN-re megszakításhoz." ihifi760,ihifi960: "Duplán koppintson a RETURN-re megszakításhoz."
ihifi770,ihifi770c,ihifi800: "Nyomja meg a HOME gombot a megszakításhoz." ihifi770,ihifi770c,ihifi800: "Nyomja meg a HOME gombot a megszakításhoz."
@ -16948,3 +16948,17 @@
general_purpose_led: "LED jelzőfények használata" general_purpose_led: "LED jelzőfények használata"
</voice> </voice>
</phrase> </phrase>
<phrase>
id: LANG_ANNOUNCE_STATUS
desc: announnnce_status plugin
user: core
<source>
*: "Announce Status"
</source>
<dest>
*: "Állapot bejelentése"
</dest>
<voice>
*: "Állapot bejelentése"
</voice>
</phrase>

View file

@ -2232,15 +2232,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Retezare basuri" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Retezare basuri"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Retezare basuri" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Retezare basuri"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -8280,15 +8280,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tăiere inalte" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tăiere inalte"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tăiere inalte" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tăiere inalte"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9078,15 +9078,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas-afsnijfrequentie" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas-afsnijfrequentie"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas-afsnijfrequentie" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas-afsnijfrequentie"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9095,15 +9095,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble-afsnijfrequentie" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble-afsnijfrequentie"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble-afsnijfrequentie" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble-afsnijfrequentie"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9877,15 +9877,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bassgrense" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bassgrense"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bassgrense" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bassgrense"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10083,15 +10083,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgrense" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgrense"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgrense" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgrense"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -8846,15 +8846,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass-knekkfrekvens" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass-knekkfrekvens"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass-knekkfrekvens" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass-knekkfrekvens"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9901,15 +9901,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantknekkfrekvens" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantknekkfrekvens"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantknekkfrekvens" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantknekkfrekvens"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9095,15 +9095,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Ścięcie basów" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Ścięcie basów"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Ścięcie basów" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Ścięcie basów"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9112,15 +9112,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Ścięcie tonów niskich" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Ścięcie tonów niskich"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Ścięcie tonów niskich" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Ścięcie tonów niskich"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9171,15 +9171,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Graves" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Graves"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Graves" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Graves"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9188,15 +9188,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Agudos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Agudos"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Agudos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Agudos"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -10140,15 +10140,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Graves" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Graves"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Graves" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Graves"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10515,15 +10515,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Agudos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte de Agudos"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte dos Agudos" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Corte dos Agudos"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -2232,15 +2232,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Retezare basuri" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Retezare basuri"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Retezare basuri" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Retezare basuri"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -8280,15 +8280,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tăiere inalte" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tăiere inalte"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tăiere inalte" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tăiere inalte"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -6289,15 +6289,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отсечение баса" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отсечение баса"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отсечение баса" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Отсечение баса"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -8856,15 +8856,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Подавление высоких частот" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Подавление высоких частот"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Подавление высоких частот" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Подавление высоких частот"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9087,15 +9087,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Hranica hĺbok" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Hranica hĺbok"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Hranica hĺbok" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Hranica hĺbok"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9104,15 +9104,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Hranica výšok" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Hranica výšok"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Hranica výšok" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Hranica výšok"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -2988,15 +2988,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10628,15 +10628,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9213,15 +9213,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Гранична фрекв. за ниске" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Гранична фрекв. за ниске"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Гранична фреквенција за ниске" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Гранична фреквенција за ниске"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9230,15 +9230,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Гранична фрекв. за високе" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Гранична фрекв. за високе"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Гранична фреквенција за високе" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Гранична фреквенција за високе"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9110,15 +9110,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basgräns" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basgräns"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basgräns" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Basgräns"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9127,15 +9127,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgräns" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgräns"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgräns" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Diskantgräns"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -6019,15 +6019,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass araw ng katapusan" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass araw ng katapusan"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass araw ng katapusan" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass araw ng katapusan"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9590,15 +9590,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Pagtatluhin araw ng katapusan" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Pagtatluhin araw ng katapusan"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Pagtatluhin araw ng katapusan" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Pagtatluhin araw ng katapusan"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9918,15 +9918,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "ความถี่ตัดเสียงทุ้ม" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "ความถี่ตัดเสียงทุ้ม"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10152,15 +10152,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "ความถี่ตัดเสียงแหลม" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "ความถี่ตัดเสียงแหลม"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -5446,15 +5446,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tiz Kesme" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tiz Kesme"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tiz Kesme" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Tiz Kesme"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9553,15 +9553,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas Kesme" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas Kesme"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas Kesme" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas Kesme"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9102,15 +9102,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Всання Басу" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Всання Басу"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Всання Басу" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Всання Басу"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9119,15 +9119,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Всання Високих Частот" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Всання Високих Частот"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Всання Високих Частот" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Всання Високих Частот"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -9140,15 +9140,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Khoảng cắt âm trầm" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Khoảng cắt âm trầm"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Khoảng cắt âm trầm" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Khoảng cắt âm trầm"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -9157,15 +9157,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Khoảng cắt âm cao" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Khoảng cắt âm cao"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Khoảng cắt âm cao" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Khoảng cắt âm cao"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -10103,15 +10103,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas-afsnijfrequentie" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas-afsnijfrequentie"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas-afsnijfrequentie" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bas-afsnijfrequentie"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10120,15 +10120,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble-afsnijfrequentie" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble-afsnijfrequentie"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble-afsnijfrequentie" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble-afsnijfrequentie"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -10158,15 +10158,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Bass Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frécwince di côpaedje des basses" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frécwince di côpaedje des basses"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frécwince di côpaedje des basses" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frécwince di côpaedje des basses"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>
@ -10175,15 +10175,15 @@
user: core user: core
<source> <source>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Treble Cutoff"
</source> </source>
<dest> <dest>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frécwince di côpaedje des hôts sons" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frécwince di côpaedje des hôts sons"
</dest> </dest>
<voice> <voice>
*: none *: none
gigabeatfx,ipod6g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frécwince di côpaedje des hôts sons" gigabeatfx,ipod6g,ipodnano3g,ipodnano4g,ipodvideo,mpiohd200,mpiohd300,mrobe100: "Frécwince di côpaedje des hôts sons"
</voice> </voice>
</phrase> </phrase>
<phrase> <phrase>

View file

@ -153,7 +153,10 @@
#endif #endif
#endif /* SDL */ #endif /* SDL */
/*#define AUTOROCK*/ /* define this to check for "autostart.rock" on boot */ // #define AUTOROCK /* define this to check for "autostart.rock" on boot */
/* Alternatively, you can define autostart plugin path and its argument: */
// #define AUTOROCK VIEWERS_DATA_DIR"/imageviewer.rock"
// #define AUTOROCK_ARG "/jpegs/sample.jpg"
static void init(void); static void init(void);
/* main(), and various functions called by main() and init() may be /* main(), and various functions called by main() and init() may be
@ -214,17 +217,25 @@ int main(void)
#ifdef AUTOROCK #ifdef AUTOROCK
{ {
char filename[MAX_PATH]; const char *file = ""AUTOROCK;
const char *file = file = *file
? file
:
#ifdef APPLICATION #ifdef APPLICATION
ROCKBOX_DIR ROCKBOX_DIR
#else #else
PLUGIN_APPS_DIR PLUGIN_APPS_DIR
#endif #endif
"/autostart.rock"; "/autostart.rock";
if(file_exists(file)) /* no complaint if it doesn't exist */ if (file_exists(file)) /* no complaint if it doesn't exist */
{ {
plugin_load(file, NULL); /* start if it does */ plugin_load(file,
#ifdef AUTOROCK_ARG
AUTOROCK_ARG
#else
NULL
#endif
); /* start if it does */
} }
} }
#endif /* #ifdef AUTOROCK */ #endif /* #ifdef AUTOROCK */

View file

@ -904,7 +904,7 @@ static void update_norm_tab(void)
norm_tab[0] = min; norm_tab[0] = min;
norm_tab_size = 1; norm_tab_size = 1;
for (int i = 0; i < lim; ++i) for (int i = 1; i < lim - 1; ++i)
{ {
int vol = from_normalized_volume(i, min, max, lim); int vol = from_normalized_volume(i, min, max, lim);
int rem = vol % step; int rem = vol % step;
@ -1944,49 +1944,40 @@ int core_load_bmp(const char * filename, struct bitmap *bm, const int bmformat,
#define NVOL_FRACBITS 16 #define NVOL_FRACBITS 16
#define NVOL_UNITY (1L << NVOL_FRACBITS) #define NVOL_UNITY (1L << NVOL_FRACBITS)
#define NVOL_FACTOR (600L << NVOL_FRACBITS)
#define NVOL_MAX_LINEAR_DB_SCALE (240L << NVOL_FRACBITS)
#define nvol_div(x,y) fp_div((x), (y), NVOL_FRACBITS) #define nvol_div(x,y) fp_div((x), (y), NVOL_FRACBITS)
#define nvol_mul(x,y) fp_mul((x), (y), NVOL_FRACBITS) #define nvol_mul(x,y) fp_mul((x), (y), NVOL_FRACBITS)
#define nvol_exp10(x) fp_exp10((x), NVOL_FRACBITS) #define nvol_exp10(x) fp_exp10((x), NVOL_FRACBITS)
#define nvol_log10(x) fp_log10((x), NVOL_FRACBITS) #define nvol_log10(x) fp_log10((x), NVOL_FRACBITS)
static bool use_linear_dB_scale(long min_vol, long max_vol) static long get_nvol_factor(void)
{ {
/* long factor = 600L << NVOL_FRACBITS;
* Alsamixer uses a linear scale for small ranges. long numdecimals = sound_numdecimals(SOUND_VOLUME);
* Commented out so perceptual volume works as advertised on all targets.
*/
/*
return max_vol - min_vol <= NVOL_MAX_LINEAR_DB_SCALE;
*/
(void)min_vol; if (numdecimals == 0)
(void)max_vol; factor /= 10;
return false;
/* nothing *actually* needs this, but: */
while (numdecimals-- > 1)
factor *= 10;
return factor;
} }
long to_normalized_volume(long vol, long min_vol, long max_vol, long max_norm) long to_normalized_volume(long vol, long min_vol, long max_vol, long max_norm)
{ {
long norm, min_norm; long norm, min_norm;
long factor = get_nvol_factor();
vol <<= NVOL_FRACBITS; vol <<= NVOL_FRACBITS;
min_vol <<= NVOL_FRACBITS; min_vol <<= NVOL_FRACBITS;
max_vol <<= NVOL_FRACBITS; max_vol <<= NVOL_FRACBITS;
max_norm <<= NVOL_FRACBITS; max_norm <<= NVOL_FRACBITS;
if (use_linear_dB_scale(min_vol, max_vol)) min_norm = nvol_exp10(nvol_div(min_vol - max_vol, factor));
{ norm = nvol_exp10(nvol_div(vol - max_vol, factor));
norm = nvol_div(vol - min_vol, max_vol - min_vol); norm = nvol_div(norm - min_norm, NVOL_UNITY - min_norm);
}
else
{
min_norm = nvol_exp10(nvol_div(min_vol - max_vol, NVOL_FACTOR));
norm = nvol_exp10(nvol_div(vol - max_vol, NVOL_FACTOR));
norm = nvol_div(norm - min_norm, NVOL_UNITY - min_norm);
}
return nvol_mul(norm, max_norm) >> NVOL_FRACBITS; return nvol_mul(norm, max_norm) >> NVOL_FRACBITS;
} }
@ -1994,6 +1985,7 @@ long to_normalized_volume(long vol, long min_vol, long max_vol, long max_norm)
long from_normalized_volume(long norm, long min_vol, long max_vol, long max_norm) long from_normalized_volume(long norm, long min_vol, long max_vol, long max_norm)
{ {
long vol, min_norm; long vol, min_norm;
long factor = get_nvol_factor();
norm <<= NVOL_FRACBITS; norm <<= NVOL_FRACBITS;
min_vol <<= NVOL_FRACBITS; min_vol <<= NVOL_FRACBITS;
@ -2002,16 +1994,9 @@ long from_normalized_volume(long norm, long min_vol, long max_vol, long max_norm
vol = nvol_div(norm, max_norm); vol = nvol_div(norm, max_norm);
if (use_linear_dB_scale(min_vol, max_vol)) min_norm = nvol_exp10(nvol_div(min_vol - max_vol, factor));
{ vol = nvol_mul(vol, NVOL_UNITY - min_norm) + min_norm;
vol = nvol_mul(vol, max_vol - min_vol) + min_vol; vol = nvol_mul(nvol_log10(vol), factor) + max_vol;
}
else
{
min_norm = nvol_exp10(nvol_div(min_vol - max_vol, NVOL_FACTOR));
vol = nvol_mul(vol, NVOL_UNITY - min_norm) + min_norm;
vol = nvol_mul(nvol_log10(vol), NVOL_FACTOR) + max_vol;
}
return vol >> NVOL_FRACBITS; return vol >> NVOL_FRACBITS;
} }

View file

@ -799,8 +799,10 @@ static void pcmbuf_pcm_callback(const void **start, size_t *size)
if (desc) if (desc)
{ {
bool track_change = index == chunk_transidx;
/* If last chunk in the track, notify of track change */ /* If last chunk in the track, notify of track change */
if (index == chunk_transidx) if (track_change)
{ {
chunk_transidx = INVALID_BUF_INDEX; chunk_transidx = INVALID_BUF_INDEX;
audio_pcmbuf_track_change(true); audio_pcmbuf_track_change(true);
@ -808,6 +810,13 @@ static void pcmbuf_pcm_callback(const void **start, size_t *size)
/* Free it for reuse */ /* Free it for reuse */
chunk_ridx = index = index_next(index); chunk_ridx = index = index_next(index);
if (track_change && !audio_pcmbuf_may_play())
{
current_desc = NULL;
*size = 0;
return;
}
} }
/*- Process the new one -*/ /*- Process the new one -*/

View file

@ -325,6 +325,7 @@ static unsigned int track_event_flags = TEF_NONE; /* (A, O-) */
static int skip_offset = 0; /* (A, O) */ static int skip_offset = 0; /* (A, O) */
static bool track_skip_is_manual = false; static bool track_skip_is_manual = false;
static bool pause_on_track_change = false;
/* Track change notification */ /* Track change notification */
static struct static struct
@ -1502,7 +1503,7 @@ static bool halt_decoding_track(bool stop)
codec_skip_pending = false; codec_skip_pending = false;
codec_seeking = false; codec_seeking = false;
pause_on_track_change = false;
return retval; return retval;
} }
@ -2734,10 +2735,14 @@ static void audio_finalise_track_change(void)
buf_read_cuesheet(info.cuesheet_hid); buf_read_cuesheet(info.cuesheet_hid);
track_id3 = bufgetid3(info.id3_hid); track_id3 = bufgetid3(info.id3_hid);
if (single_mode_do_pause(info.id3_hid)) /* When pause_on_track_change is calculated, next track_info may be missing
* (due to a low buffer or an automatic directory change),
* so we need to recalculate it. */
if (pause_on_track_change || single_mode_do_pause(info.id3_hid))
{ {
play_status = PLAY_PAUSED; play_status = PLAY_PAUSED;
pcmbuf_pause(true); pcmbuf_pause(true);
pause_on_track_change = false;
} }
} }
/* Sync the next track information */ /* Sync the next track information */
@ -2815,11 +2820,16 @@ static void audio_monitor_end_of_playlist(void)
} }
/* Does this track have an entry allocated? */ /* Does this track have an entry allocated? */
static bool audio_can_change_track(int *trackstat, int *id3_hid) static bool audio_can_change_track(int *trackstat, enum pcm_track_change_type *type)
{ {
struct track_info info; struct track_info info;
bool have_track = track_list_advance_current(1, &info); bool have_track = track_list_advance_current(1, &info);
*id3_hid = info.id3_hid;
pause_on_track_change = have_track && single_mode_do_pause(info.id3_hid);
*type = pause_on_track_change
? TRACK_CHANGE_END_OF_DATA
: TRACK_CHANGE_AUTO;
if (!have_track || info.audio_hid < 0) if (!have_track || info.audio_hid < 0)
{ {
bool end_of_playlist = false; bool end_of_playlist = false;
@ -2828,8 +2838,8 @@ static bool audio_can_change_track(int *trackstat, int *id3_hid)
{ {
if (filling == STATE_STOPPED) if (filling == STATE_STOPPED)
{ {
audio_begin_track_change(TRACK_CHANGE_END_OF_DATA, *trackstat); *type = TRACK_CHANGE_END_OF_DATA;
return false; return true;
} }
/* Track load is not complete - it might have stopped on a /* Track load is not complete - it might have stopped on a
@ -2931,13 +2941,10 @@ static void audio_on_codec_complete(int status)
track_event_flags = TEF_AUTO_SKIP; track_event_flags = TEF_AUTO_SKIP;
skip_pending = TRACK_SKIP_AUTO; skip_pending = TRACK_SKIP_AUTO;
int id3_hid = 0; enum pcm_track_change_type type;
if (audio_can_change_track(&trackstat, &id3_hid)) if (audio_can_change_track(&trackstat, &type))
{ {
audio_begin_track_change( audio_begin_track_change(type, trackstat);
single_mode_do_pause(id3_hid)
? TRACK_CHANGE_END_OF_DATA
: TRACK_CHANGE_AUTO, trackstat);
} }
} }
@ -3850,7 +3857,7 @@ void audio_pcmbuf_track_change(bool pcmbuf)
/* May pcmbuf start PCM playback when the buffer is full enough? */ /* May pcmbuf start PCM playback when the buffer is full enough? */
bool audio_pcmbuf_may_play(void) bool audio_pcmbuf_may_play(void)
{ {
return play_status == PLAY_PLAYING && !ff_rw_mode; return play_status == PLAY_PLAYING && !ff_rw_mode && !pause_on_track_change;
} }

View file

@ -758,9 +758,6 @@ static const struct plugin_api rockbox_api = {
audio_current_track, audio_current_track,
audio_flush_and_reload_tracks, audio_flush_and_reload_tracks,
audio_get_file_pos, audio_get_file_pos,
#ifdef PLUGIN_USE_IRAM
audio_hard_stop,
#endif
add_playbacklog, add_playbacklog,
/* menu */ /* menu */

View file

@ -178,7 +178,7 @@ int plugin_open(const char *plugin, const char *parameter);
* when this happens please take the opportunity to sort in * when this happens please take the opportunity to sort in
* any new functions "waiting" at the end of the list. * any new functions "waiting" at the end of the list.
*/ */
#define PLUGIN_API_VERSION 277 #define PLUGIN_API_VERSION 278
/* 239 Marks the removal of ARCHOS HWCODEC and CHARCELL */ /* 239 Marks the removal of ARCHOS HWCODEC and CHARCELL */
@ -889,9 +889,6 @@ struct plugin_api {
struct mp3entry* (*audio_current_track)(void); struct mp3entry* (*audio_current_track)(void);
void (*audio_flush_and_reload_tracks)(void); void (*audio_flush_and_reload_tracks)(void);
int (*audio_get_file_pos)(void); int (*audio_get_file_pos)(void);
#ifdef PLUGIN_USE_IRAM
void (*audio_hard_stop)(void);
#endif
void (*add_playbacklog)(struct mp3entry *id3); void (*add_playbacklog)(struct mp3entry *id3);
/* menu */ /* menu */

View file

@ -150,12 +150,6 @@ struct battery_tables_t {
#define BATTERY_OFF BUTTON_POWER #define BATTERY_OFF BUTTON_POWER
#define BATTERY_OFF_TXT "POWER" #define BATTERY_OFF_TXT "POWER"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define BATTERY_ON BUTTON_PLAY
#define BATTERY_ON_TXT "PLAY - start"
#define BATTERY_OFF BUTTON_BACK
#define BATTERY_OFF_TXT "BACK"
#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD #elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
#define BATTERY_ON BUTTON_MENU #define BATTERY_ON BUTTON_MENU

View file

@ -237,22 +237,6 @@ enum {
#define BJACK_QUIT BUTTON_POWER #define BJACK_QUIT BUTTON_POWER
#define BJACK_DOUBLEDOWN BUTTON_MINUS #define BJACK_DOUBLEDOWN BUTTON_MINUS
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define BJACK_SELECT_NAME "SELECT"
#define BJACK_STAY_NAME "PLAY"
#define BJACK_QUIT_NAME "POWER"
#define BJACK_DOUBLE_NAME "CUSTOM"
#define BJACK_SELECT BUTTON_SELECT
#define BJACK_QUIT BUTTON_POWER
#define BJACK_STAY BUTTON_PLAY
#define BJACK_MAX (BUTTON_CUSTOM|BUTTON_UP)
#define BJACK_MIN (BUTTON_CUSTOM|BUTTON_DOWN)
#define BJACK_DOUBLEDOWN BUTTON_CUSTOM
#define BJACK_UP BUTTON_UP
#define BJACK_DOWN BUTTON_DOWN
#define BJACK_RIGHT BUTTON_RIGHT
#define BJACK_LEFT BUTTON_LEFT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define BJACK_SELECT_NAME "PLAY" #define BJACK_SELECT_NAME "PLAY"
#define BJACK_STAY_NAME "MENU" #define BJACK_STAY_NAME "MENU"

View file

@ -169,14 +169,6 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define DOWN BUTTON_RC_VOL_DOWN #define DOWN BUTTON_RC_VOL_DOWN
#define RC_QUIT BUTTON_REC #define RC_QUIT BUTTON_REC
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define QUIT BUTTON_BACK
#define LEFT BUTTON_LEFT
#define RIGHT BUTTON_RIGHT
#define SELECT BUTTON_SELECT
#define UP BUTTON_UP
#define DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define QUIT BUTTON_POWER #define QUIT BUTTON_POWER
#define LEFT BUTTON_BACK #define LEFT BUTTON_BACK
@ -1504,8 +1496,7 @@ static int brickmania_help(void)
"Releases", "the", "ball/Fire!", "", /* 30 */ "Releases", "the", "ball/Fire!", "", /* 30 */
#if CONFIG_KEYPAD == IAUDIO_M3_PAD #if CONFIG_KEYPAD == IAUDIO_M3_PAD
"REC:", "REC:",
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) || \ #elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
(CONFIG_KEYPAD == CREATIVEZVM_PAD)
"BACK:", "BACK:",
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \ (CONFIG_KEYPAD == IPOD_3G_PAD) || \

View file

@ -269,17 +269,6 @@ F3: equal to "="
#define CALCULATOR_QUIT BUTTON_POWER #define CALCULATOR_QUIT BUTTON_POWER
#define CALCULATOR_CLEAR BUTTON_MENU #define CALCULATOR_CLEAR BUTTON_MENU
#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD)
#define CALCULATOR_LEFT BUTTON_LEFT
#define CALCULATOR_RIGHT BUTTON_RIGHT
#define CALCULATOR_UP BUTTON_UP
#define CALCULATOR_DOWN BUTTON_DOWN
#define CALCULATOR_QUIT BUTTON_BACK
#define CALCULATOR_INPUT BUTTON_SELECT
#define CALCULATOR_CALC BUTTON_MENU
#define CALCULATOR_CLEAR BUTTON_PLAY
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CALCULATOR_LEFT (BUTTON_BACK|BUTTON_REL) #define CALCULATOR_LEFT (BUTTON_BACK|BUTTON_REL)

View file

@ -149,16 +149,6 @@
#define CALENDAR_PREV_MONTH BUTTON_BOTTOMLEFT #define CALENDAR_PREV_MONTH BUTTON_BOTTOMLEFT
#define CALENDAR_EVENT_MENU_NAME "menu" #define CALENDAR_EVENT_MENU_NAME "menu"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CALENDAR_QUIT BUTTON_BACK
#define CALENDAR_SELECT BUTTON_SELECT
#define CALENDAR_NEXT_WEEK BUTTON_DOWN
#define CALENDAR_PREV_WEEK BUTTON_UP
#define CALENDAR_NEXT_DAY BUTTON_RIGHT
#define CALENDAR_PREV_DAY BUTTON_LEFT
#define CALENDAR_NEXT_MONTH BUTTON_CUSTOM
#define CALENDAR_PREV_MONTH BUTTON_PLAY
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CALENDAR_QUIT BUTTON_POWER #define CALENDAR_QUIT BUTTON_POWER
#define CALENDAR_SELECT BUTTON_PLAY #define CALENDAR_SELECT BUTTON_PLAY

View file

@ -39,7 +39,7 @@ $(CHESSBOX_OBJDIR)/chessbox.ovl: $(CHESSBOX_OBJ) $(CHESSBOX_OUTLDS)
$(filter %.o, $^) \ $(filter %.o, $^) \
$(filter %.a, $+) \ $(filter %.a, $+) \
-lgcc $(CHESSBOX_OVLFLAGS) -lgcc $(CHESSBOX_OVLFLAGS)
$(call PRINTS,LD $(@F))$(call objcopy,$(basename $@).elf,$@) $(call PRINTS,LD $(@F))$(call objcopy_plugin,$(basename $@).elf,$@)
# special pattern rule for compiling chessbox with extra flags # special pattern rule for compiling chessbox with extra flags
$(CHESSBOX_OBJDIR)/%.o: $(CHESSBOX_SRCDIR)/%.c $(CHESSBOX_SRCDIR)/chessbox.make $(CHESSBOX_OBJDIR)/%.o: $(CHESSBOX_SRCDIR)/%.c $(CHESSBOX_SRCDIR)/chessbox.make

View file

@ -222,20 +222,6 @@
#define CB_RESTART BUTTON_MINUS #define CB_RESTART BUTTON_MINUS
#define CB_MENU (BUTTON_MENU|BUTTON_REL) #define CB_MENU (BUTTON_MENU|BUTTON_REL)
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CB_SELECT BUTTON_PLAY
#define CB_UP BUTTON_UP
#define CB_DOWN BUTTON_DOWN
#define CB_LEFT BUTTON_LEFT
#define CB_RIGHT BUTTON_RIGHT
#define CB_PLAY BUTTON_SELECT
#define CB_LEVEL BUTTON_CUSTOM
#define CB_MENU BUTTON_MENU
#define CB_SCROLL_UP (BUTTON_UP|BUTTON_REPEAT)
#define CB_SCROLL_DOWN (BUTTON_DOWN|BUTTON_REPEAT)
#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CB_SELECT (BUTTON_PLAY|BUTTON_REL) #define CB_SELECT (BUTTON_PLAY|BUTTON_REL)
#define CB_UP BUTTON_UP #define CB_UP BUTTON_UP

View file

@ -147,16 +147,6 @@
#define CHC_SETTINGS_DEC BUTTON_MINUS #define CHC_SETTINGS_DEC BUTTON_MINUS
#define CHC_SETTINGS_CANCEL BUTTON_POWER #define CHC_SETTINGS_CANCEL BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CHC_QUIT BUTTON_BACK
#define CHC_STARTSTOP BUTTON_PLAY
#define CHC_RESET BUTTON_CUSTOM
#define CHC_MENU BUTTON_MENU
#define CHC_SETTINGS_INC BUTTON_UP
#define CHC_SETTINGS_DEC BUTTON_DOWN
#define CHC_SETTINGS_OK BUTTON_SELECT
#define CHC_SETTINGS_CANCEL BUTTON_BACK
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CHC_QUIT BUTTON_POWER #define CHC_QUIT BUTTON_POWER
#define CHC_STARTSTOP BUTTON_PLAY #define CHC_STARTSTOP BUTTON_PLAY

View file

@ -1048,16 +1048,6 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#elif (CONFIG_KEYPAD == COWON_D2_PAD) #elif (CONFIG_KEYPAD == COWON_D2_PAD)
#define CHIP8_OFF BUTTON_POWER #define CHIP8_OFF BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CHIP8_OFF BUTTON_BACK
#define CHIP8_KEY1 BUTTON_MENU
#define CHIP8_KEY2 BUTTON_UP
#define CHIP8_KEY3 BUTTON_CUSTOM
#define CHIP8_KEY4 BUTTON_LEFT
#define CHIP8_KEY5 BUTTON_PLAY
#define CHIP8_KEY6 BUTTON_RIGHT
#define CHIP8_KEY8 BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CHIP8_OFF BUTTON_POWER #define CHIP8_OFF BUTTON_POWER
#define CHIP8_KEY1 BUTTON_VOL_UP #define CHIP8_KEY1 BUTTON_VOL_UP

View file

@ -108,12 +108,6 @@ Still To do:
#define QUIT BUTTON_POWER #define QUIT BUTTON_POWER
#define ACTION2 BUTTON_PLUS #define ACTION2 BUTTON_PLUS
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define QUIT BUTTON_BACK
#define ACTION BUTTON_UP
#define ACTION2 BUTTON_MENU
#define ACTIONTEXT "UP"
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define QUIT BUTTON_POWER #define QUIT BUTTON_POWER
#define ACTION BUTTON_UP #define ACTION BUTTON_UP

View file

@ -114,14 +114,6 @@
#define CLIX_BUTTON_UP BUTTON_UP #define CLIX_BUTTON_UP BUTTON_UP
#define CLIX_BUTTON_DOWN BUTTON_DOWN #define CLIX_BUTTON_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CLIX_BUTTON_QUIT BUTTON_BACK
#define CLIX_BUTTON_LEFT BUTTON_LEFT
#define CLIX_BUTTON_RIGHT BUTTON_RIGHT
#define CLIX_BUTTON_CLICK BUTTON_SELECT
#define CLIX_BUTTON_UP BUTTON_UP
#define CLIX_BUTTON_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CLIX_BUTTON_QUIT BUTTON_POWER #define CLIX_BUTTON_QUIT BUTTON_POWER
#define CLIX_BUTTON_LEFT BUTTON_BACK #define CLIX_BUTTON_LEFT BUTTON_BACK

View file

@ -163,16 +163,6 @@
#elif CONFIG_KEYPAD == COWON_D2_PAD #elif CONFIG_KEYPAD == COWON_D2_PAD
#define CUBE_QUIT BUTTON_POWER #define CUBE_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define CUBE_QUIT BUTTON_BACK
#define CUBE_NEXT BUTTON_RIGHT
#define CUBE_PREV BUTTON_LEFT
#define CUBE_INC BUTTON_UP
#define CUBE_DEC BUTTON_DOWN
#define CUBE_MODE BUTTON_MENU
#define CUBE_PAUSE BUTTON_PLAY
#define CUBE_HIGHSPEED BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define CUBE_QUIT BUTTON_POWER #define CUBE_QUIT BUTTON_POWER
#define CUBE_NEXT BUTTON_UP #define CUBE_NEXT BUTTON_UP

View file

@ -316,18 +316,6 @@ void I_ShutdownGraphics(void)
#define DOOMBUTTON_ENTER BUTTON_MENU #define DOOMBUTTON_ENTER BUTTON_MENU
#define DOOMBUTTON_WEAPON BUTTON_DISPLAY #define DOOMBUTTON_WEAPON BUTTON_DISPLAY
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define DOOMBUTTON_UP BUTTON_UP
#define DOOMBUTTON_DOWN BUTTON_DOWN
#define DOOMBUTTON_LEFT BUTTON_LEFT
#define DOOMBUTTON_RIGHT BUTTON_RIGHT
#define DOOMBUTTON_SHOOT BUTTON_SELECT
#define DOOMBUTTON_OPEN BUTTON_PLAY
#define DOOMBUTTON_ESC BUTTON_BACK
#define DOOMBUTTON_ENTER BUTTON_PLAY
#define DOOMBUTTON_WEAPON BUTTON_MENU
#define DOOMBUTTON_MAP BUTTON_CUSTOM
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define DOOMBUTTON_UP BUTTON_UP #define DOOMBUTTON_UP BUTTON_UP
#define DOOMBUTTON_DOWN BUTTON_DOWN #define DOOMBUTTON_DOWN BUTTON_DOWN

View file

@ -799,7 +799,7 @@ static inline bool fft_get_fft(void)
#if NUM_CORES > 1 #if NUM_CORES > 1
/* use a worker thread if there is another processor core */ /* use a worker thread if there is another processor core */
static volatile bool fft_thread_run SHAREDDATA_ATTR = false; static volatile bool fft_thread_run SHAREDBSS_ATTR;
static unsigned long fft_thread = 0; static unsigned long fft_thread = 0;
static long fft_thread_stack[CACHEALIGN_UP(DEFAULT_STACK_SIZE*4/sizeof(long))] static long fft_thread_stack[CACHEALIGN_UP(DEFAULT_STACK_SIZE*4/sizeof(long))]

View file

@ -226,18 +226,6 @@
#define FLIPIT_QUIT BUTTON_POWER #define FLIPIT_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define FLIPIT_LEFT BUTTON_LEFT
#define FLIPIT_RIGHT BUTTON_RIGHT
#define FLIPIT_UP BUTTON_UP
#define FLIPIT_DOWN BUTTON_DOWN
#define FLIPIT_QUIT BUTTON_BACK
#define FLIPIT_SHUFFLE BUTTON_CUSTOM
#define FLIPIT_SOLVE BUTTON_PLAY
#define FLIPIT_STEP_BY_STEP BUTTON_MENU
#define FLIPIT_TOGGLE BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define FLIPIT_LEFT BUTTON_BACK #define FLIPIT_LEFT BUTTON_BACK
#define FLIPIT_RIGHT BUTTON_MENU #define FLIPIT_RIGHT BUTTON_MENU

View file

@ -200,18 +200,6 @@
#elif CONFIG_KEYPAD == COWON_D2_PAD #elif CONFIG_KEYPAD == COWON_D2_PAD
#define FRACTAL_QUIT BUTTON_POWER #define FRACTAL_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define FRACTAL_QUIT BUTTON_BACK
#define FRACTAL_UP BUTTON_UP
#define FRACTAL_DOWN BUTTON_DOWN
#define FRACTAL_LEFT BUTTON_LEFT
#define FRACTAL_RIGHT BUTTON_RIGHT
#define FRACTAL_ZOOM_IN BUTTON_PLAY
#define FRACTAL_ZOOM_OUT BUTTON_MENU
#define FRACTAL_PRECISION_INC (BUTTON_UP | BUTTON_CUSTOM)
#define FRACTAL_PRECISION_DEC (BUTTON_DOWN | BUTTON_CUSTOM)
#define FRACTAL_RESET BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define FRACTAL_QUIT BUTTON_POWER #define FRACTAL_QUIT BUTTON_POWER
#define FRACTAL_UP BUTTON_UP #define FRACTAL_UP BUTTON_UP

View file

@ -150,20 +150,6 @@
#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT #define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_NEXT #define GBN_BUTTON_NEXT_VAR BUTTON_NEXT
#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD) \
|| (CONFIG_KEYPAD == CREATIVEZV_PAD)
#define GBN_BUTTON_UP BUTTON_UP
#define GBN_BUTTON_DOWN BUTTON_DOWN
#define GBN_BUTTON_LEFT BUTTON_LEFT
#define GBN_BUTTON_RIGHT BUTTON_RIGHT
#define GBN_BUTTON_RETREAT BUTTON_BACK
#define GBN_BUTTON_ADVANCE BUTTON_CUSTOM
#define GBN_BUTTON_MENU BUTTON_MENU
#define GBN_BUTTON_PLAY BUTTON_SELECT | BUTTON_REL
#define GBN_BUTTON_CONTEXT BUTTON_SELECT | BUTTON_REPEAT
#define GBN_BUTTON_NEXT_VAR BUTTON_PLAY
#elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD) #elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD)
#define GBN_BUTTON_UP BUTTON_UP | BUTTON_REL #define GBN_BUTTON_UP BUTTON_UP | BUTTON_REL
#define GBN_BUTTON_DOWN BUTTON_DOWN #define GBN_BUTTON_DOWN BUTTON_DOWN

View file

@ -36,4 +36,4 @@ $(GOBAN_BUILDDIR)/goban.ovl: $(GOBAN_OBJ) $(GOBAN_OUTLDS)
$(filter %.o, $^) \ $(filter %.o, $^) \
$(filter %.a, $+) \ $(filter %.a, $+) \
-lgcc $(GOBAN_OVLFLAGS) -lgcc $(GOBAN_OVLFLAGS)
$(call PRINTS,LD $(@F))$(call objcopy,$(basename $@).elf,$@) $(call PRINTS,LD $(@F))$(call objcopy_plugin,$(basename $@).elf,$@)

View file

@ -40,7 +40,7 @@ $(IMGVBUILDDIR)/%.ovl: $(IMGDEC_OUTLDS)
$(filter-out $(PLUGIN_CRT0),$(filter %.o, $^)) \ $(filter-out $(PLUGIN_CRT0),$(filter %.o, $^)) \
$(filter %.a, $+) \ $(filter %.a, $+) \
-lgcc $(IMGDEC_OVLFLAGS) -lgcc $(IMGDEC_OVLFLAGS)
$(SILENT)$(call objcopy,$(IMGVBUILDDIR)/$*.elf,$@) $(SILENT)$(call objcopy_plugin,$(IMGVBUILDDIR)/$*.elf,$@)
# rule to create reference map for image decoder # rule to create reference map for image decoder
$(IMGVBUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(IMGVSRCDIR)/imageviewer.h $(PLUGINLINK_LDS) $(PLUGIN_LIBS) $(IMGVBUILDDIR)/%.refmap: $(APPSDIR)/plugin.h $(IMGVSRCDIR)/imageviewer.h $(PLUGINLINK_LDS) $(PLUGIN_LIBS)

View file

@ -209,18 +209,6 @@
#elif CONFIG_KEYPAD == COWON_D2_PAD #elif CONFIG_KEYPAD == COWON_D2_PAD
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define IMGVIEW_ZOOM_IN BUTTON_PLAY
#define IMGVIEW_ZOOM_OUT BUTTON_CUSTOM
#define IMGVIEW_UP BUTTON_UP
#define IMGVIEW_DOWN BUTTON_DOWN
#define IMGVIEW_LEFT BUTTON_LEFT
#define IMGVIEW_RIGHT BUTTON_RIGHT
#define IMGVIEW_NEXT BUTTON_SELECT
#define IMGVIEW_PREVIOUS BUTTON_BACK
#define IMGVIEW_MENU BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define IMGVIEW_ZOOM_IN (BUTTON_VOL_UP|BUTTON_REL) #define IMGVIEW_ZOOM_IN (BUTTON_VOL_UP|BUTTON_REL)
#define IMGVIEW_ZOOM_OUT (BUTTON_VOL_DOWN|BUTTON_REL) #define IMGVIEW_ZOOM_OUT (BUTTON_VOL_DOWN|BUTTON_REL)

View file

@ -5,7 +5,7 @@ static int fd;
extern int GETC(void) extern int GETC(void)
{ {
unsigned char x = 0; unsigned char x = 0;
rb->read(fd, &x, 1) rb->read(fd, &x, 1);
return x; return x;
} }

View file

@ -155,13 +155,6 @@
#define RIGHT BUTTON_PLUS #define RIGHT BUTTON_PLUS
#define FIRE BUTTON_MENU #define FIRE BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define QUIT BUTTON_BACK
#define LEFT BUTTON_LEFT
#define RIGHT BUTTON_RIGHT
#define FIRE BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define QUIT BUTTON_POWER #define QUIT BUTTON_POWER

View file

@ -191,16 +191,6 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define JEWELS_CANCEL BUTTON_POWER #define JEWELS_CANCEL BUTTON_POWER
#define HK_CANCEL "POWER" #define HK_CANCEL "POWER"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define JEWELS_UP BUTTON_UP
#define JEWELS_DOWN BUTTON_DOWN
#define JEWELS_LEFT BUTTON_LEFT
#define JEWELS_RIGHT BUTTON_RIGHT
#define JEWELS_SELECT BUTTON_SELECT
#define JEWELS_CANCEL BUTTON_BACK
#define HK_SELECT "MIDDLE"
#define HK_CANCEL "BACK"
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define JEWELS_UP BUTTON_UP #define JEWELS_UP BUTTON_UP
#define JEWELS_DOWN BUTTON_DOWN #define JEWELS_DOWN BUTTON_DOWN

View file

@ -56,7 +56,6 @@
(CONFIG_KEYPAD == IAUDIO_X5M5_PAD) || \ (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) || \
(CONFIG_KEYPAD == CREATIVE_ZEN_PAD) || \ (CONFIG_KEYPAD == CREATIVE_ZEN_PAD) || \
(CONFIG_KEYPAD == SONY_NWZ_PAD) || \ (CONFIG_KEYPAD == SONY_NWZ_PAD) || \
(CONFIG_KEYPAD == CREATIVEZVM_PAD) || \
(CONFIG_KEYPAD == SAMSUNG_YPR0_PAD) || \ (CONFIG_KEYPAD == SAMSUNG_YPR0_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD) || \ (CONFIG_KEYPAD == IRIVER_H300_PAD) || \
(CONFIG_KEYPAD == HM801_PAD) || \ (CONFIG_KEYPAD == HM801_PAD) || \
@ -128,10 +127,6 @@
#define BTN_FIRE BUTTON_SELECT #define BTN_FIRE BUTTON_SELECT
#define BTN_PAUSE BUTTON_BACK #define BTN_PAUSE BUTTON_BACK
#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD)
#define BTN_FIRE BUTTON_PLAY
#define BTN_PAUSE BUTTON_MENU
#elif (CONFIG_KEYPAD == SAMSUNG_YPR0_PAD) #elif (CONFIG_KEYPAD == SAMSUNG_YPR0_PAD)
#define BTN_FIRE BUTTON_USER #define BTN_FIRE BUTTON_USER
#define BTN_PAUSE BUTTON_MENU #define BTN_PAUSE BUTTON_MENU

View file

@ -96,7 +96,6 @@ const struct button_mapping pla_main_ctx[] =
|| (CONFIG_KEYPAD == MROBE100_PAD) \ || (CONFIG_KEYPAD == MROBE100_PAD) \
|| (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) \ || (CONFIG_KEYPAD == PHILIPS_HDD1630_PAD) \
|| (CONFIG_KEYPAD == SANSA_CLIP_PAD) \ || (CONFIG_KEYPAD == SANSA_CLIP_PAD) \
|| (CONFIG_KEYPAD == CREATIVEZVM_PAD) \
|| (CONFIG_KEYPAD == SANSA_M200_PAD)\ || (CONFIG_KEYPAD == SANSA_M200_PAD)\
|| (CONFIG_KEYPAD == SANSA_E200_PAD) \ || (CONFIG_KEYPAD == SANSA_E200_PAD) \
|| (CONFIG_KEYPAD == SANSA_FUZE_PAD) \ || (CONFIG_KEYPAD == SANSA_FUZE_PAD) \
@ -405,12 +404,6 @@ const struct button_mapping pla_main_ctx[] =
{PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
{PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == CREATIVEZVM_PAD)
{PLA_CANCEL, BUTTON_BACK|BUTTON_REL, BUTTON_BACK},
{PLA_EXIT, BUTTON_BACK|BUTTON_REPEAT, BUTTON_NONE},
{PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
{PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == ONDAVX747_PAD) #elif (CONFIG_KEYPAD == ONDAVX747_PAD)
{PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER}, {PLA_CANCEL, BUTTON_POWER|BUTTON_REL, BUTTON_POWER},
{PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE}, {PLA_EXIT, BUTTON_POWER|BUTTON_REPEAT, BUTTON_NONE},

View file

@ -74,6 +74,7 @@ struct preferences {
bool wrap; bool wrap;
bool wipe; bool wipe;
bool active_one_line; bool active_one_line;
bool autoscroll;
int align; /* 0: left, 1: center, 2: right */ int align; /* 0: left, 1: center, 2: right */
bool statusbar_on; bool statusbar_on;
bool display_title; bool display_title;
@ -99,6 +100,7 @@ static const char *extentions[NUM_TYPES] = {
static struct lrc_info { static struct lrc_info {
struct mp3entry *id3; struct mp3entry *id3;
long elapsed; long elapsed;
long scroll;
long length; long length;
long ff_rewind; long ff_rewind;
int audio_status; int audio_status;
@ -1643,21 +1645,25 @@ static int display_lrc_line(struct lrc_line *lrc_line, int ypos, int i)
struct screen *display = rb->screens[i]; struct screen *display = rb->screens[i];
struct lrc_word *lrc_word; struct lrc_word *lrc_word;
struct lrc_brpos *lrc_brpos; struct lrc_brpos *lrc_brpos;
long time_start, time_end, elapsed; long time_start, time_end, time_elapsed, elapsed;
int count, width, nword; int count, width, nword;
int xpos; int xpos;
const char *str; const char *str;
bool active_line; bool active_line;
if (!prefs.autoscroll)
time_elapsed = current.scroll;
else
time_elapsed = current.elapsed;
time_start = get_time_start(lrc_line); time_start = get_time_start(lrc_line);
time_end = get_time_start(lrc_line->next); time_end = get_time_start(lrc_line->next);
active_line = (time_start <= current.elapsed active_line = (time_start <= time_elapsed
&& time_end > current.elapsed); && time_end > time_elapsed);
if (!lrc_line->width) if (!lrc_line->width)
{ {
/* empty line. draw bar during interval. */ /* empty line. draw bar during interval. */
long rin = current.elapsed - time_start; long rin = time_elapsed - time_start;
long len = time_end - time_start; long len = time_end - time_start;
if (current.wipe && active_line && len >= 3500) if (current.wipe && active_line && len >= 3500)
{ {
@ -1697,12 +1703,12 @@ static int display_lrc_line(struct lrc_line *lrc_line, int ypos, int i)
else else
time_end = get_time_start(lrc_line->next); time_end = get_time_start(lrc_line->next);
if (time_start > current.elapsed || !active_line) if (time_start > time_elapsed || !active_line)
{ {
/* inactive */ /* inactive */
elapsed = 0; elapsed = 0;
} }
else if (!current.wipe || time_end <= current.elapsed) else if (!current.wipe || time_end <= time_elapsed)
{ {
/* active whole word */ /* active whole word */
elapsed = lrc_word->width; elapsed = lrc_word->width;
@ -1710,7 +1716,7 @@ static int display_lrc_line(struct lrc_line *lrc_line, int ypos, int i)
else else
{ {
/* wipe word */ /* wipe word */
long rin = current.elapsed - time_start; long rin = time_elapsed - time_start;
long len = time_end - time_start; long len = time_end - time_start;
elapsed = rin * lrc_word->width / len; elapsed = rin * lrc_word->width / len;
} }
@ -1727,27 +1733,30 @@ static int display_lrc_line(struct lrc_line *lrc_line, int ypos, int i)
c = word_count; c = word_count;
w = word_width; w = word_width;
} }
if (elapsed <= 0) if (prefs.autoscroll)
{ {
set_to_inactive(display); if (elapsed <= 0)
} {
else if (elapsed < w) set_to_inactive(display);
{ }
/* wipe text */ else if (elapsed < w)
display->fillrect(xpos, ypos, elapsed, font_ui_height); {
set_to_inactive(display); /* wipe text */
display->fillrect(xpos+elapsed, ypos, display->fillrect(xpos, ypos, elapsed, font_ui_height);
w-elapsed, font_ui_height); set_to_inactive(display);
display->fillrect(xpos+elapsed, ypos,
w-elapsed, font_ui_height);
#if (LCD_DEPTH > 1) #if (LCD_DEPTH > 1)
#ifdef HAVE_REMOTE_LCD #ifdef HAVE_REMOTE_LCD
if (display->screen_type == SCREEN_REMOTE) if (display->screen_type == SCREEN_REMOTE)
display->set_drawmode(DRMODE_INVERSEVID); display->set_drawmode(DRMODE_INVERSEVID);
else else
#endif #endif
display->set_drawmode(DRMODE_BG); display->set_drawmode(DRMODE_BG);
#else #else
display->set_drawmode(DRMODE_INVERSEVID); display->set_drawmode(DRMODE_INVERSEVID);
#endif #endif
}
} }
rb->strlcpy(temp_buf, str, c+1); rb->strlcpy(temp_buf, str, c+1);
display->putsxy(xpos, ypos, temp_buf); display->putsxy(xpos, ypos, temp_buf);
@ -1777,13 +1786,18 @@ static int display_lrc_line(struct lrc_line *lrc_line, int ypos, int i)
static void display_lrcs(void) static void display_lrcs(void)
{ {
long time_start, time_end, rin, len; long time_start, time_end, time_elapsed, rin, len;
int nline[NB_SCREENS] = {0}; int nline[NB_SCREENS] = {0};
struct lrc_line *lrc_center = current.ll_head; struct lrc_line *lrc_center = current.ll_head;
if (!lrc_center) return; if (!lrc_center) return;
while (get_time_start(lrc_center->next) <= current.elapsed) if (!prefs.autoscroll)
time_elapsed = current.scroll;
else
time_elapsed = current.elapsed;
while (get_time_start(lrc_center->next) <= time_elapsed)
{ {
nline[SCREEN_MAIN] += lrc_center->nline[SCREEN_MAIN]; nline[SCREEN_MAIN] += lrc_center->nline[SCREEN_MAIN];
#ifdef HAVE_REMOTE_LCD #ifdef HAVE_REMOTE_LCD
@ -1794,7 +1808,7 @@ static void display_lrcs(void)
time_start = get_time_start(lrc_center); time_start = get_time_start(lrc_center);
time_end = get_time_start(lrc_center->next); time_end = get_time_start(lrc_center->next);
rin = current.elapsed - time_start; rin = time_elapsed - time_start;
len = time_end - time_start; len = time_end - time_start;
struct screen *display; struct screen *display;
@ -1810,9 +1824,9 @@ static void display_lrcs(void)
y = (nblines-1)/2; y = (nblines-1)/2;
if (rin < 0) if (rin < 0)
{ {
/* current.elapsed < time of first lrc */ /* time_elapsed < time of first lrc */
if (!current.wipe) if (!current.wipe)
ypos = (time_start - current.elapsed) ypos = (time_start - time_elapsed)
* font_ui_height / time_start; * font_ui_height / time_start;
else else
y++; y++;
@ -1849,7 +1863,7 @@ static void display_lrcs(void)
ypos = display_lrc_line(lrc_line, ypos, i); ypos = display_lrc_line(lrc_line, ypos, i);
lrc_line = lrc_line->next; lrc_line = lrc_line->next;
} }
if (!lrc_line && ypos < vp_lyrics[i].height) if (!lrc_line && ypos < vp_lyrics[i].height && prefs.autoscroll)
display->putsxy(0, ypos, "[end]"); display->putsxy(0, ypos, "[end]");
display->update_viewport(); display->update_viewport();
@ -2150,6 +2164,7 @@ static void load_or_save_settings(bool save)
{ TYPE_BOOL, 0, 1, { .bool_p = &prefs.wipe }, "wipe", NULL }, { TYPE_BOOL, 0, 1, { .bool_p = &prefs.wipe }, "wipe", NULL },
{ TYPE_BOOL, 0, 1, { .bool_p = &prefs.active_one_line }, { TYPE_BOOL, 0, 1, { .bool_p = &prefs.active_one_line },
"active one line", NULL }, "active one line", NULL },
{ TYPE_BOOL, 0, 1, { .bool_p = &prefs.autoscroll }, "autoscroll", NULL },
{ TYPE_INT, 0, 2, { .int_p = &prefs.align }, "align", NULL }, { TYPE_INT, 0, 2, { .int_p = &prefs.align }, "align", NULL },
{ TYPE_BOOL, 0, 1, { .bool_p = &prefs.statusbar_on }, { TYPE_BOOL, 0, 1, { .bool_p = &prefs.statusbar_on },
"statusbar on", NULL }, "statusbar on", NULL },
@ -2179,6 +2194,7 @@ static void load_or_save_settings(bool save)
prefs.wrap = true; prefs.wrap = true;
prefs.wipe = true; prefs.wipe = true;
prefs.active_one_line = false; prefs.active_one_line = false;
prefs.autoscroll = true;
prefs.align = 1; /* center */ prefs.align = 1; /* center */
prefs.statusbar_on = false; prefs.statusbar_on = false;
prefs.display_title = true; prefs.display_title = true;
@ -2264,6 +2280,7 @@ static bool lrc_display_menu(void)
LRC_MENU_WIPE, LRC_MENU_WIPE,
LRC_MENU_ALIGN, LRC_MENU_ALIGN,
LRC_MENU_LINE_MODE, LRC_MENU_LINE_MODE,
LRC_MENU_SCROLL_MODE,
}; };
int selected = 0; int selected = 0;
@ -2271,7 +2288,8 @@ static bool lrc_display_menu(void)
MENUITEM_STRINGLIST(menu, "Display Settings", NULL, MENUITEM_STRINGLIST(menu, "Display Settings", NULL,
"Wrap", "Wipe", "Alignment", "Wrap", "Wipe", "Alignment",
"Activate Only Current Line"); "Activate Only Current Line",
"Automatic Scrolling");
struct opt_items align_names[] = { struct opt_items align_names[] = {
{"Left", -1}, {"Centre", -1}, {"Right", -1}, {"Left", -1}, {"Centre", -1}, {"Right", -1},
@ -2295,6 +2313,9 @@ static bool lrc_display_menu(void)
usb = rb->set_bool("Activate Only Current Line", usb = rb->set_bool("Activate Only Current Line",
&prefs.active_one_line); &prefs.active_one_line);
break; break;
case LRC_MENU_SCROLL_MODE:
usb = rb->set_bool("Automatic Scrolling", &prefs.autoscroll);
break;
case MENU_ATTACHED_USB: case MENU_ATTACHED_USB:
usb = true; usb = true;
break; break;
@ -2619,10 +2640,28 @@ static int handle_button(void)
} }
break; break;
case ACTION_WPS_VOLDOWN: case ACTION_WPS_VOLDOWN:
rb->adjust_volume(-1); if (!prefs.autoscroll)
{
current.scroll -= 3000;
if (current.scroll < 0)
current.scroll = 0;
}
else
{
rb->adjust_volume(-1);
}
break; break;
case ACTION_WPS_VOLUP: case ACTION_WPS_VOLUP:
rb->adjust_volume(1); if (!prefs.autoscroll)
{
current.scroll += 3000;
if (current.scroll > current.length)
current.scroll = current.length;
}
else
{
rb->adjust_volume(1);
}
break; break;
case ACTION_WPS_CONTEXT: case ACTION_WPS_CONTEXT:
ret = LRC_GOTO_EDITOR; ret = LRC_GOTO_EDITOR;
@ -2705,6 +2744,7 @@ static int lrc_main(void)
{ {
current.elapsed = 0; current.elapsed = 0;
current.length = 1; current.length = 1;
current.scroll = 0;
} }
if (current.id3 && id3_timeout && if (current.id3 && id3_timeout &&
@ -2782,6 +2822,7 @@ enum plugin_status plugin_start(const void* parameter)
current.lrc_file[0] = 0; current.lrc_file[0] = 0;
current.ff_rewind = -1; current.ff_rewind = -1;
current.found_lrc = false; current.found_lrc = false;
current.scroll = 0;
if (parameter && check_audio_status()) if (parameter && check_audio_status())
{ {
const char *ext; const char *ext;
@ -2790,7 +2831,7 @@ enum plugin_status plugin_start(const void* parameter)
rb->strcpy(current.lrc_file, parameter); rb->strcpy(current.lrc_file, parameter);
if (!rb->file_exists(current.lrc_file)) if (!rb->file_exists(current.lrc_file))
{ {
rb->splash(HZ, "Specified file dose not exist."); rb->splash(HZ, "Specified file does not exist.");
return PLUGIN_ERROR; return PLUGIN_ERROR;
} }
ext = rb->strrchr(current.lrc_file, '.'); ext = rb->strrchr(current.lrc_file, '.');

View file

@ -73,7 +73,7 @@ $(LUA_BUILDDIR)/lua.ovl: $(LUA_OBJ) $(TLSFLIB) $(LUA_OUTLDS)
$(filter %.o, $^) \ $(filter %.o, $^) \
$(filter %.a, $+) \ $(filter %.a, $+) \
-lgcc $(LUA_OVLFLAGS) -lgcc $(LUA_OVLFLAGS)
$(call PRINTS,LD $(@F))$(call objcopy,$(basename $@).elf,$@) $(call PRINTS,LD $(@F))$(call objcopy_plugin,$(basename $@).elf,$@)
$(LUA_BUILDDIR): $(LUA_BUILDDIR):
$(call PRINTS,MKDIR $@)mkdir -p $(LUA_BUILDDIR)/ $(call PRINTS,MKDIR $@)mkdir -p $(LUA_BUILDDIR)/

View file

@ -1052,6 +1052,11 @@ LUALIB_API int luaopen_rock(lua_State *L)
{ {
luaL_register(L, LUA_ROCKLIBNAME, rocklib); luaL_register(L, LUA_ROCKLIBNAME, rocklib);
luaL_register(L, LUA_ROCKLIBNAME, rocklib_aux); luaL_register(L, LUA_ROCKLIBNAME, rocklib_aux);
#ifdef SIMULATOR /* rb.SIMULATOR = true allows checking for the SIM in lua */
lua_pushboolean(L, 1);
luaS_newlloc(L, "SIMULATOR", TSTR_INBIN);
lua_setfield(L, -2, "SIMULATOR");
#endif
lua_getglobal(L, "require"); lua_getglobal(L, "require");
lua_pushstring(L, "rb_defines"); lua_pushstring(L, "rb_defines");
if (lua_pcall (L, 1, 0, 0)) if (lua_pcall (L, 1, 0, 0))

View file

@ -414,7 +414,11 @@ action_event(rb.actions.ACTION_NONE) -- we can call this now but not after regis
local eva = rockev.register("action", action_event) local eva = rockev.register("action", action_event)
local evc = rockev.register("timer", action_drift, rb.HZ/7) local evc = rockev.register("timer", action_drift, rb.HZ/7)
if not rb.SIMULATOR then
while not action_quit() do rb.sleep(rb.HZ) end while not action_quit() do rb.sleep(rb.HZ) end
else -- the SIM requires lcd_update to be called from the main thread
while not action_quit() do _lcd:update(); rb.sleep(10) end
end
if start_x and start_y then if start_x and start_y then
file = io.open(fname, "w") file = io.open(fname, "w")

View file

@ -140,14 +140,6 @@
#elif CONFIG_KEYPAD == COWON_D2_PAD #elif CONFIG_KEYPAD == COWON_D2_PAD
#define MIDI_QUIT BUTTON_POWER #define MIDI_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define MIDI_QUIT BUTTON_BACK
#define MIDI_FFWD BUTTON_RIGHT
#define MIDI_REWIND BUTTON_LEFT
#define MIDI_VOL_UP BUTTON_UP
#define MIDI_VOL_DOWN BUTTON_DOWN
#define MIDI_PLAYPAUSE BUTTON_PLAY
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define MIDI_QUIT (BUTTON_PLAY|BUTTON_REPEAT) #define MIDI_QUIT (BUTTON_PLAY|BUTTON_REPEAT)
#define MIDI_FFWD BUTTON_MENU #define MIDI_FFWD BUTTON_MENU

View file

@ -165,16 +165,6 @@ enum minesweeper_status {
#elif (CONFIG_KEYPAD == COWON_D2_PAD) #elif (CONFIG_KEYPAD == COWON_D2_PAD)
# define MINESWP_QUIT BUTTON_POWER # define MINESWP_QUIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
# define MINESWP_LEFT BUTTON_LEFT
# define MINESWP_RIGHT BUTTON_RIGHT
# define MINESWP_UP BUTTON_UP
# define MINESWP_DOWN BUTTON_DOWN
# define MINESWP_QUIT BUTTON_BACK
# define MINESWP_TOGGLE BUTTON_SELECT
# define MINESWP_DISCOVER BUTTON_PLAY
# define MINESWP_INFO BUTTON_MENU
#elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD #elif CONFIG_KEYPAD == PHILIPS_HDD1630_PAD
# define MINESWP_LEFT BUTTON_LEFT # define MINESWP_LEFT BUTTON_LEFT
# define MINESWP_RIGHT BUTTON_RIGHT # define MINESWP_RIGHT BUTTON_RIGHT

View file

@ -2446,12 +2446,6 @@ static void get_mp3_filename(const char *wav_name)
#elif CONFIG_KEYPAD == COWON_D2_PAD #elif CONFIG_KEYPAD == COWON_D2_PAD
#define MP3ENC_DONE BUTTON_POWER #define MP3ENC_DONE BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define MP3ENC_PREV BUTTON_UP
#define MP3ENC_NEXT BUTTON_DOWN
#define MP3ENC_DONE BUTTON_BACK
#define MP3ENC_SELECT BUTTON_SELECT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define MP3ENC_PREV BUTTON_UP #define MP3ENC_PREV BUTTON_UP
#define MP3ENC_NEXT BUTTON_DOWN #define MP3ENC_NEXT BUTTON_DOWN

View file

@ -142,16 +142,6 @@ struct mpeg_settings settings;
#elif CONFIG_KEYPAD == COWON_D2_PAD #elif CONFIG_KEYPAD == COWON_D2_PAD
#define MPEG_START_TIME_EXIT BUTTON_POWER #define MPEG_START_TIME_EXIT BUTTON_POWER
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define MPEG_START_TIME_SELECT BUTTON_SELECT
#define MPEG_START_TIME_LEFT BUTTON_LEFT
#define MPEG_START_TIME_RIGHT BUTTON_RIGHT
#define MPEG_START_TIME_UP BUTTON_UP
#define MPEG_START_TIME_DOWN BUTTON_DOWN
#define MPEG_START_TIME_LEFT2 BUTTON_PLAY
#define MPEG_START_TIME_RIGHT2 BUTTON_MENU
#define MPEG_START_TIME_EXIT BUTTON_BACK
#elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD) #elif (CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD)
#define MPEG_START_TIME_SELECT (BUTTON_PLAY|BUTTON_REL) #define MPEG_START_TIME_SELECT (BUTTON_PLAY|BUTTON_REL)
#define MPEG_START_TIME_LEFT BUTTON_BACK #define MPEG_START_TIME_LEFT BUTTON_BACK
@ -985,13 +975,6 @@ static int get_start_time(uint32_t duration)
case STATE0: case STATE0:
if (!sliding) if (!sliding)
{ {
if (rb->global_settings->talk_menu)
{
rb->talk_disable(true);
#ifdef PLUGIN_USE_IRAM
mpegplayer_iram_restore();
#endif
}
trigger_cpu_boost(); trigger_cpu_boost();
sliding = true; sliding = true;
} }
@ -1010,10 +993,6 @@ static int get_start_time(uint32_t duration)
cancel_cpu_boost(); cancel_cpu_boost();
if (rb->global_settings->talk_menu) if (rb->global_settings->talk_menu)
{ {
#ifdef PLUGIN_USE_IRAM
mpegplayer_iram_preserve();
#endif
rb->talk_disable(false);
talk_val(resume_time / TS_SECOND, UNIT_TIME, false); talk_val(resume_time / TS_SECOND, UNIT_TIME, false);
talk_val(resume_time * 100 / duration, UNIT_PERCENT, true); talk_val(resume_time * 100 / duration, UNIT_PERCENT, true);
} }
@ -1053,14 +1032,6 @@ static int show_start_menu(uint32_t duration)
ID2P(LANG_SETTINGS), ID2P(LANG_SETTINGS),
ID2P(LANG_MENU_QUIT)); ID2P(LANG_MENU_QUIT));
if (rb->global_settings->talk_menu)
{
#ifdef PLUGIN_USE_IRAM
mpegplayer_iram_preserve();
#endif
rb->talk_disable(false);
}
rb->button_clear_queue(); rb->button_clear_queue();
while (!menu_quit) while (!menu_quit)
@ -1109,14 +1080,6 @@ static int show_start_menu(uint32_t duration)
} }
} }
if (rb->global_settings->talk_menu)
{
rb->talk_disable(true);
#ifdef PLUGIN_USE_IRAM
mpegplayer_iram_restore();
#endif
}
return result; return result;
} }
@ -1151,14 +1114,6 @@ int mpeg_menu(void)
ID2P(LANG_RESUME_PLAYBACK), ID2P(LANG_RESUME_PLAYBACK),
ID2P(LANG_MENU_QUIT)); ID2P(LANG_MENU_QUIT));
if (rb->global_settings->talk_menu)
{
#ifdef PLUGIN_USE_IRAM
mpegplayer_iram_preserve();
#endif
rb->talk_disable(false);
}
rb->button_clear_queue(); rb->button_clear_queue();
mpeg_sysevent_clear(); mpeg_sysevent_clear();
@ -1184,14 +1139,6 @@ int mpeg_menu(void)
if (mpeg_sysevent() != 0) if (mpeg_sysevent() != 0)
result = MPEG_MENU_QUIT; result = MPEG_MENU_QUIT;
if (rb->global_settings->talk_menu)
{
rb->talk_disable(true);
#ifdef PLUGIN_USE_IRAM
mpegplayer_iram_restore();
#endif
}
return result; return result;
} }

View file

@ -254,15 +254,6 @@ CONFIG_KEYPAD == SANSA_M200_PAD
#define MPEG_VOLDOWN BUTTON_MINUS #define MPEG_VOLDOWN BUTTON_MINUS
#define MPEG_VOLUP BUTTON_PLUS #define MPEG_VOLUP BUTTON_PLUS
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define MPEG_MENU BUTTON_MENU
#define MPEG_STOP BUTTON_BACK
#define MPEG_PAUSE BUTTON_PLAY
#define MPEG_VOLDOWN BUTTON_UP
#define MPEG_VOLUP BUTTON_DOWN
#define MPEG_RW BUTTON_LEFT
#define MPEG_FF BUTTON_RIGHT
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define MPEG_MENU BUTTON_MENU #define MPEG_MENU BUTTON_MENU
#define MPEG_STOP (BUTTON_PLAY|BUTTON_REPEAT) #define MPEG_STOP (BUTTON_PLAY|BUTTON_REPEAT)
@ -690,54 +681,6 @@ static unsigned draw_blendcolor(unsigned c1, unsigned c2, unsigned char amount)
} }
#endif #endif
#ifdef PLUGIN_USE_IRAM
/* IRAM preserving mechanism to enable talking menus */
static char *iram_saved_copy;
extern char iramstart[], iramend[];
static void iram_saving_init(void)
{
#ifndef SIMULATOR
size_t size;
iram_saved_copy = (char *)rb->plugin_get_buffer(&size);
if (size >= (size_t)(iramend-iramstart))
iram_saved_copy += size - (size_t)(iramend - iramstart);
else
#endif
iram_saved_copy = NULL;
return;
}
void mpegplayer_iram_preserve(void)
{
if (iram_saved_copy)
{
rb->memcpy(iram_saved_copy, iramstart, iramend-iramstart);
#ifdef HAVE_CPUCACHE_INVALIDATE
/* make the icache (if it exists) up to date with the new code */
rb->cpucache_invalidate();
#endif /* HAVE_CPUCACHE_INVALIDATE */
}
return;
}
void mpegplayer_iram_restore(void)
{
if (iram_saved_copy)
{
rb->audio_hard_stop();
rb->memcpy(iramstart, iram_saved_copy, iramend-iramstart);
#ifdef HAVE_CPUCACHE_INVALIDATE
/* make the icache (if it exists) up to date with the new code */
rb->cpucache_invalidate();
#endif /* HAVE_CPUCACHE_INVALIDATE */
}
return;
}
#endif
/* Drawing functions that operate rotated on LCD_PORTRAIT displays - /* Drawing functions that operate rotated on LCD_PORTRAIT displays -
* most are just wrappers of lcd_* functions with transforms applied. * most are just wrappers of lcd_* functions with transforms applied.
* The origin is the upper-left corner of the OSD area */ * The origin is the upper-left corner of the OSD area */
@ -2472,29 +2415,12 @@ enum plugin_status plugin_start(const void* parameter)
int status = PLUGIN_OK; /* assume success */ int status = PLUGIN_OK; /* assume success */
bool quit = false; bool quit = false;
#if defined(PLUGIN_USE_IRAM) && !defined(SIMULATOR)
bool preserved_talk_state;
#endif
if (parameter == NULL) { if (parameter == NULL) {
/* No file = GTFO */ /* No file = GTFO */
rb->splash(HZ*2, "No File"); rb->splash(HZ*2, "No File");
return PLUGIN_ERROR; return PLUGIN_ERROR;
} }
/* Disable all talking before initializing IRAM */
rb->talk_disable(true);
#ifdef PLUGIN_USE_IRAM
iram_saving_init();
#ifndef SIMULATOR
preserved_talk_state = rb->global_settings->talk_menu;
if (!iram_saved_copy)
rb->global_settings->talk_menu = false;
#endif
#endif
#ifdef HAVE_LCD_COLOR #ifdef HAVE_LCD_COLOR
rb->lcd_set_backdrop(NULL); rb->lcd_set_backdrop(NULL);
rb->lcd_set_foreground(LCD_WHITE); rb->lcd_set_foreground(LCD_WHITE);
@ -2645,13 +2571,6 @@ enum plugin_status plugin_start(const void* parameter)
stream_exit(); stream_exit();
#if defined(PLUGIN_USE_IRAM) && !defined(SIMULATOR)
if (!iram_saved_copy)
rb->global_settings->talk_menu = preserved_talk_state;
#endif
rb->talk_disable(false);
/* Actually handle delayed processing of system events of interest /* Actually handle delayed processing of system events of interest
* that were captured in other button loops */ * that were captured in other button loops */
mpeg_sysevent_handle(); mpeg_sysevent_handle();

View file

@ -86,10 +86,4 @@
#define LCD_ENABLE_EVENT_0 MAKE_SYS_EVENT(SYS_EVENT_CLS_PRIVATE, 0) #define LCD_ENABLE_EVENT_0 MAKE_SYS_EVENT(SYS_EVENT_CLS_PRIVATE, 0)
#define LCD_ENABLE_EVENT_1 MAKE_SYS_EVENT(SYS_EVENT_CLS_PRIVATE, 1) #define LCD_ENABLE_EVENT_1 MAKE_SYS_EVENT(SYS_EVENT_CLS_PRIVATE, 1)
#ifdef PLUGIN_USE_IRAM
/* IRAM preserving mechanism to enable talking menus */
extern void mpegplayer_iram_preserve(void);
extern void mpegplayer_iram_restore(void);
#endif
#endif /* MPEGPLAYER_H */ #endif /* MPEGPLAYER_H */

View file

@ -176,12 +176,18 @@ static void op_entry_set_checksum(void)
(op_entry.lang_id <= OPEN_PLUGIN_LANG_INVALID ? 0 : LANG_LAST_INDEX_IN_ARRAY); (op_entry.lang_id <= OPEN_PLUGIN_LANG_INVALID ? 0 : LANG_LAST_INDEX_IN_ARRAY);
} }
static void op_entry_set_name(void) static bool op_entry_set_name(void)
{ {
char tmp_buf[OPEN_PLUGIN_NAMESZ+1]; char tmp_buf[OPEN_PLUGIN_NAMESZ+1];
rb->strlcpy(tmp_buf, op_entry.name, OPEN_PLUGIN_NAMESZ); rb->strlcpy(tmp_buf, op_entry.name, OPEN_PLUGIN_NAMESZ);
uint32_t crc = rb->crc_32(tmp_buf, sizeof(tmp_buf), 0xffffffff);
if (rb->kbd_input(tmp_buf, OPEN_PLUGIN_NAMESZ, NULL) >= 0) if (rb->kbd_input(tmp_buf, OPEN_PLUGIN_NAMESZ, NULL) >= 0)
{
rb->strlcpy(op_entry.name, tmp_buf, OPEN_PLUGIN_NAMESZ); rb->strlcpy(op_entry.name, tmp_buf, OPEN_PLUGIN_NAMESZ);
return crc != rb->crc_32(tmp_buf, sizeof(tmp_buf), 0xffffffff);
}
return false;
} }
static int op_entry_set_path(void) static int op_entry_set_path(void)
@ -392,10 +398,10 @@ static uint32_t op_entry_add_path(const char *key, const char *plugin, const cha
rb->strlcpy(op_entry.param, parameter, OPEN_PLUGIN_BUFSZ); rb->strlcpy(op_entry.param, parameter, OPEN_PLUGIN_BUFSZ);
/* hash on the parameter path if it is a file */ /* hash on the parameter path if it is a file */
if (op_entry.lang_id <0 && key == op_entry.path && if (op_entry.lang_id <0 && (key == op_entry.path || key == NULL) &&
rb->file_exists(op_entry.param)) rb->file_exists(op_entry.param))
{ {
open_plugin_get_hash(op_entry.path, &newhash); open_plugin_get_hash(op_entry.param, &newhash);
op_entry.hash = newhash; op_entry.hash = newhash;
} }
} }
@ -692,6 +698,7 @@ static void edit_menu(int selection)
{ {
int selected_item; int selected_item;
bool exit = false; bool exit = false;
bool name_set = false;
int action = 0; int action = 0;
if (!op_entry_read(fd_dat, selection, op_entry_sz)) if (!op_entry_read(fd_dat, selection, op_entry_sz))
@ -713,11 +720,22 @@ static void edit_menu(int selection)
{ {
case ACTION_STD_OK: case ACTION_STD_OK:
if (selected_item == 0) if (selected_item == 0)
op_entry_set_name(); {
name_set = op_entry_set_name();
}
else if (selected_item == 2) else if (selected_item == 2)
op_entry_set_path(); op_entry_set_path();
else if (selected_item == 4) else if (selected_item == 4)
{
op_entry_set_param(); op_entry_set_param();
/* if user already set the name they probably don't want us to change it */
if (!name_set && op_entry.lang_id < 0 && rb->file_exists(op_entry.param))
{
char *slash = rb->strrchr(op_entry.param, '/');
if(slash)
rb->strlcpy(op_entry.name, slash+1, OPEN_PLUGIN_NAMESZ);
}
}
else else
exit = true; exit = true;

View file

@ -223,20 +223,6 @@
#define OSCILLOSCOPE_VOL_UP BUTTON_PLUS #define OSCILLOSCOPE_VOL_UP BUTTON_PLUS
#define OSCILLOSCOPE_VOL_DOWN BUTTON_MINUS #define OSCILLOSCOPE_VOL_DOWN BUTTON_MINUS
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define OSCILLOSCOPE_QUIT BUTTON_BACK
#define OSCILLOSCOPE_DRAWMODE BUTTON_SELECT
#define OSCILLOSCOPE_ADVMODE BUTTON_CUSTOM
#define OSCILLOSCOPE_ORIENTATION_PRE BUTTON_MENU
#define OSCILLOSCOPE_ORIENTATION (BUTTON_MENU | BUTTON_REL)
#define OSCILLOSCOPE_GRAPHMODE_PRE BUTTON_MENU
#define OSCILLOSCOPE_GRAPHMODE (BUTTON_MENU | BUTTON_REPEAT)
#define OSCILLOSCOPE_PAUSE BUTTON_PLAY
#define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT
#define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT
#define OSCILLOSCOPE_VOL_UP BUTTON_UP
#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define OSCILLOSCOPE_QUIT BUTTON_POWER #define OSCILLOSCOPE_QUIT BUTTON_POWER
#define OSCILLOSCOPE_DRAWMODE (BUTTON_MENU | BUTTON_UP) #define OSCILLOSCOPE_DRAWMODE (BUTTON_MENU | BUTTON_UP)

2
apps/plugins/pacbox/pacbox.c Executable file → Normal file
View file

@ -387,7 +387,7 @@ static void start_sound(void)
if (sound_playing) if (sound_playing)
return; return;
#ifndef PLUGIN_USE_IRAM #ifndef USE_IRAM
/* Ensure control of PCM - stopping music itn't obligatory */ /* Ensure control of PCM - stopping music itn't obligatory */
rb->plugin_get_audio_buffer(NULL); rb->plugin_get_audio_buffer(NULL);
#endif #endif

View file

@ -169,17 +169,6 @@
#define PACMAN_MENU (BUTTON_MENU|BUTTON_REL) #define PACMAN_MENU (BUTTON_MENU|BUTTON_REL)
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define PACMAN_UP BUTTON_UP
#define PACMAN_DOWN BUTTON_DOWN
#define PACMAN_LEFT BUTTON_LEFT
#define PACMAN_RIGHT BUTTON_RIGHT
#define PACMAN_1UP BUTTON_CUSTOM
#define PACMAN_2UP BUTTON_PLAY
#define PACMAN_COIN BUTTON_SELECT
#define PACMAN_MENU BUTTON_MENU
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define PACMAN_UP BUTTON_UP #define PACMAN_UP BUTTON_UP

View file

@ -271,23 +271,6 @@
#define QUIT_TEXT "POWER" #define QUIT_TEXT "POWER"
#elif CONFIG_KEYPAD == CREATIVEZVM_PAD
#define PEGBOX_SELECT BUTTON_CUSTOM
#define PEGBOX_QUIT BUTTON_BACK
#define PEGBOX_RESTART BUTTON_SELECT
#define PEGBOX_LVL_UP BUTTON_PLAY
#define PEGBOX_LVL_DOWN BUTTON_MENU
#define PEGBOX_UP BUTTON_UP
#define PEGBOX_DOWN BUTTON_DOWN
#define PEGBOX_RIGHT BUTTON_RIGHT
#define PEGBOX_LEFT BUTTON_LEFT
#define SELECT_TEXT "CUSTOM"
#define QUIT_TEXT "BACK"
#define RESTART_TEXT "MIDDLE"
#define LVL_UP_TEXT "SELECT"
#define LVL_DOWN_TEXT "MENU"
#elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD #elif CONFIG_KEYPAD == CREATIVE_ZENXFI3_PAD
#define PEGBOX_SELECT (BUTTON_PLAY|BUTTON_REL) #define PEGBOX_SELECT (BUTTON_PLAY|BUTTON_REL)
#define PEGBOX_QUIT BUTTON_POWER #define PEGBOX_QUIT BUTTON_POWER

0
apps/plugins/picross/picross_default.picross Executable file → Normal file
View file

View file

@ -126,8 +126,7 @@ const struct button_mapping pf_context_buttons[] =
{PF_SELECT, BUTTON_CENTER, BUTTON_NONE}, {PF_SELECT, BUTTON_CENTER, BUTTON_NONE},
{PF_BACK, BUTTON_BOTTOMRIGHT, BUTTON_NONE}, {PF_BACK, BUTTON_BOTTOMRIGHT, BUTTON_NONE},
#endif #endif
#if CONFIG_KEYPAD == CREATIVEZV_PAD || CONFIG_KEYPAD == CREATIVEZVM_PAD || \ #if CONFIG_KEYPAD == PHILIPS_HDD1630_PAD || \
CONFIG_KEYPAD == PHILIPS_HDD1630_PAD || \
CONFIG_KEYPAD == GIGABEAT_PAD || CONFIG_KEYPAD == GIGABEAT_S_PAD || \ CONFIG_KEYPAD == GIGABEAT_PAD || CONFIG_KEYPAD == GIGABEAT_S_PAD || \
CONFIG_KEYPAD == MROBE100_PAD || CONFIG_KEYPAD == MROBE500_PAD || \ CONFIG_KEYPAD == MROBE100_PAD || CONFIG_KEYPAD == MROBE500_PAD || \
CONFIG_KEYPAD == PHILIPS_SA9200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD || \ CONFIG_KEYPAD == PHILIPS_SA9200_PAD || CONFIG_KEYPAD == SANSA_CLIP_PAD || \
@ -162,8 +161,6 @@ const struct button_mapping pf_context_buttons[] =
{PF_QUIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU}, {PF_QUIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU},
#elif CONFIG_KEYPAD == IAUDIO_M3_PAD #elif CONFIG_KEYPAD == IAUDIO_M3_PAD
{PF_QUIT, BUTTON_RC_REC, BUTTON_NONE}, {PF_QUIT, BUTTON_RC_REC, BUTTON_NONE},
#elif CONFIG_KEYPAD == MEIZU_M6SL_PAD
{PF_QUIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU},
#elif CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD #elif CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD
{PF_QUIT, BUTTON_OFF, BUTTON_NONE}, {PF_QUIT, BUTTON_OFF, BUTTON_NONE},
#elif CONFIG_KEYPAD == PBELL_VIBE500_PAD #elif CONFIG_KEYPAD == PBELL_VIBE500_PAD

Some files were not shown because too many files have changed in this diff Show more