Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: dd86k/ddhx

0.6

12 Oct 17:05

Choose a tag to compare

This release focuses on quality of life improvements.

Featured changes include a search command, selection capabilities, and
configuration file support.

Warning

quit has been remapped from Q to Ctrl+Q as a default key, to really confirm quitting as an action (you can still bind it back to Q).

Find Data

What's a hex editor without a search function?

You're now able to search by pattern. A pattern is made up of a prefix and data.

For example, x:00 01 will search for [0x00, 0x01].

It is possible to compound patterns: find o:33 s:hi x:dd 00 will search for
[0x1b, 0x68, 0x69, 0xdd, 0x00].

Syntax: find PATTERN...

Patterns:

  • x:, 0x: 8-bit unsigned hexadecimal.
  • d:: 8-bit unsigned decimal.
  • o:: 8-bit unsigned octal.
  • s:, "...": UTF-8 string.
    • Quotes have to be escaped (\"...\") due to prompt processing.
    • Future update: Transcode to current character set.

Commands implemented:

  • find (Ctrl+F), find-back (Ctrl+B)
    • find-back simply initiates the search backwards, meaning towards start of document.
  • find-next (Ctrl+N), find-prev (Shift+N)
    • Allows traversing results forward and backward.

Selecting Data

Selection has to be my new favourite feature for this version.

Using the Shift modifier and navigation keys, it's possible to select data and
perform shortcuts and commands directly with it.

Example flow (skip forward):

  1. Select bytes, this will be used as a search needle.
  2. Either hit Ctrl+RightArrow or use command skip-front.

That's it! The command will automatically detect if there is a selection and
use it.

Commands supporting selection:

  • move-skip-front, move-skip-back
    • Selection allows skipping data by this pattern.
    • e.g., Selecting [0x01, 0x02, 0x03, 0x04] will skip all of this pattern or to EOF, like a word.
  • find, find-back
    • Selection allows searching for this same needle by selected pattern.
    • e.g., Selecting [0x01, 0x02, 0x03, 0x04] will search for the same instance.
  • goto
    • Selection allows performing an absolute seek to this position.
    • e.g., Selecting [0x01, 0x02, 0x03, 0x04] will go to this position (0x04030201 on little systems).

Commands implemented:

  • select-left (Shift+LeftArrow)
  • select-right (Shift+RightArrow)
  • select-up (Shift+UpArrow)
  • select-down (Shift+DownArrow)
  • select-home (Shift+Home)
  • select-end (Shift+End)

Bind Key

Prefer your current code editor keybinds?

The bind command allows you to dynamically rebind keys.

Example of binding keys to match vim navigation keys:

  • bind h left
  • bind j down
  • bind k up
  • bind l right

It's also possible to map new default parameters:

  • bind shift+p goto +32 will map Shift+P to goto +32 (jump 32 bytes ahead).

Keys set within a session are only valid for the session.

The unbind command either unbinds the key or resets it to its default keymap.

Syntax:

  • bind KEY COMMAND [PARAMETERS...]
  • unbind KEY
  • reset-keys

Config File

If you want EBCDIC by default, you can!

Configuration files are now supported.

It's now possible to set default configuration values and remap keys.

Example format:

# Comments uses '#'
# For "address", "d", "dec", and "decimal" are all valid!
address decimal
columns 10

# Imitate vim navigation
bind h left
bind j down
bind k up
bind l right

# Add command parameters to command!
bind ctrl+p goto +32

# Older quit behavior
bind q quit

# Imitate nano
bind ctrl+x quit
bind ctrl+g find-next

Here are example paths that will be tried, in order. Only the first config path
found is loaded. Command-line parameters still take priority.

Windows:

  • %LOCALAPPDATA%\ddhx\.ddhxrc
    • e.g., C:\Users\dd\AppData\Local\ddhx\.ddhxrc
  • %USERPROFILE%\.ddhxrc
    • e.g., C:\Users\dd\.ddhxrc

POSIX:

  • $XDG_HOME_CONFIG/ddhx/.ddhxrc
    • e.g., /home/dd/.config/ddhx/.ddhxrc
  • ~/.ddhxrc
    • e.g., /home/dd/.ddhxrc

To avoid loading configs, use -I or --norc.

To use a specific config file, use -f or --rcfile with a specified file.

Changelog

  • Added: Config file support.
  • Added: select-right (Shift+RightArrow), select-left (Shift+LeftArrow), select-up (Shift+UpArrow), select-down (Shift+DownArrow), select-home (Shift+Home), select+end (Shift+End) selection commands.
  • Added: find (Ctrl+F), find-back (Ctrl+B), find-next (Ctrl+N), find-prev (Shift+N) search commands.
  • Added: bind command.
  • Added: unbind command.
  • Added: reset-keys command.
  • Added: autoresize configuration.
  • Improved: VT220 input scanning, and other general improvements to terminal handling.
  • Improved: Command prompt handles embedded quote escapes.
  • Removed: "start" and "end" aliases for goto, since we have top (Ctrl+Home) and bottom (Ctrl+End) commands.

0.5.1

27 Sep 15:09

Choose a tag to compare

This release fixes cursor-skip-front and cursor-skip-back. No idea how I did not notice that while testing.

Changelog since 0.5:

  • Added: --help-commands, --help-configs, and --help-debug.
  • Changed --address to --addressing and -A.
    • --addressing=o and --addressing=octal means the same thing.
    • -Ao and -Aoctal means the same thing.
  • Fixed: cursor-skip-back (Ctrl+LeftArrow) and cursor-skip-front (Ctrl+RightArrow).

0.5

25 Sep 15:06

Choose a tag to compare

0.5

And it's official, the 0.5 version release.

This release is a focus on getting basic stuff working (byte overwrite and append operations) with an emphasis on navigation.

Not all features from older releases made it back (e.g., searching). It will eventually.

Code is somewhat horrible and should work reliably at the moment to edit existing and new files.

Changelog from 0.5.0-rc.1:

  • Added: --help-keys as a help page for default shortcuts.
  • Fixed: View camera not adjusting to the very last line to EOF.
  • Fixed: Skip bytes forward/backward not going its search buffer.
  • Other various unimportant tweaks, like how edit chunks are aligned by page size.

Notes:

  • The linux-static released was built on Alpine 3.20.
    • It was tested successfully on Ubuntu 20.04 and Ubuntu 24.04.
  • A thankful person validated that 0.5.0-rc.1 works on macOS.

0.5 Release Candidate 1

17 Sep 01:54

Choose a tag to compare

Considered mostly stable and ready to be used for light editing.

Changelog since v0.5.0-beta.1:

  • Added: "report-name" (Ctrl+N) to report the name of the document on-screen (or "(new buffer)" if unnamed).
  • Added: "autosize" (Alt+R) to automatically adjust the number of columns according to screen size.
  • Fixed: Inconsistent behaviour across C runtimes (affects static builds primarily).

Notes:

  • Linux static version compiled against Alpine 3.20 (Musl 1.2.5) using GDC 13.2.1.

0.5 Beta 1

12 Sep 06:34

Choose a tag to compare

0.5 Beta 1 Pre-release
Pre-release

Changelog:

  • Added: "refresh" (Ctrl+L) command.
  • Added: "view-up" (Ctrl+UpArrow) and "view-down" (Ctrl+DownArrow) to move the view, not the cursor.
  • Added: Navigation by percentage. "goto" now accepts %n arguments where n is a number between 0 and 100.
    • "goto %50" will move the cursor halfway through the document.
  • Fixed: Rendering when base document overlapped chunk ahead.
  • Fixed: "cursor-skip-back" when cursor is at end of buffer.

0.5 Alpha 3

09 Sep 17:30

Choose a tag to compare

0.5 Alpha 3 Pre-release
Pre-release

Changelog:

  • Added: "cursor-skip-back" (Ctrl+LeftArrow) and "cursor-skip-front" (Ctrl+RightArrow) to skip same bytes.
  • Added: "save-as" (Ctrl+O) to save as another name.
  • Added: "report-position" (Ctrl+P) to report the position of the cursor in the buffer.
  • Added: --address-spacing CLI option to set left address column spacing, in characters.
  • Added: --chunksize for debugging purposes.
  • Added: Support for stdin. Data can be piped to the application.
  • Fixed: Saving without edits.
  • Fixed: Performance when jumping across gigabytes.

No builds because I'm lazy.

0.5 Alpha 2

06 Sep 18:44

Choose a tag to compare

0.5 Alpha 2 Pre-release
Pre-release

Changelog since alpha.1:

  • Added: "goto" command with shortcut ^G (Ctrl+G).
  • Added: "set" command. Sets session and rc settings.
    • Separated from command prompt to set clearer intent.
  • Fixed: Android (Bionic) compilation.
  • Remapped command prompt key to Enter.
  • Undo/redo properly moves cursor to edit location. (As observed in vscodium, for example)
  • Added build info in version page.

Commands can now prompt for a parameter if it wasn't provided to it via the command prompt.

Notes:

  • ddhx-0.5.0-alpha.1-glibc-amd64.tar.xz was built against Ubuntu 20.04 (Glibc 2.31) as I couldn't get static builds going.
  • ddhx-0.5.0-alpha.1-musl-amd64.tar.gz was build against Alpine 3.20 (Musl 1.2.5). Same as above.

0.5 Alpha 1

30 Aug 20:13

Choose a tag to compare

0.5 Alpha 1 Pre-release
Pre-release

First test release of ddhx 0.5.

Rewritten from scratch (too many times) to support editing. Currently, it only supports overwriting empty buffers and from existing files. One element at a time, with undo/redo.

Notes:

  • ddhx-0.5.0-alpha.1-glibc-amd64.tar.xz was built against Ubuntu 24.04 (Glibc 2.39) as I couldn't get static builds going.
  • ddhx-0.5.0-alpha.1-musl-amd64.tar.gz was build against Alpine 3.20 (Musl 1.2.5). Same as above.

0.4.2

29 Apr 02:18

Choose a tag to compare

EDIT: Version 0.5 is planned to make ddhx a hex editor with a new engine. 0.4.2 is still just a viewer, it cannot edit data.

It's usable, I swear.

Changelog

  • Improved: Small tweak in the statusbar to be a little more readable.
  • Improved: IEC/SI inconsistencies, introduced --si.
  • Fixed: Where the terminal module would unconditionally reset itself on exit, impacting --dump.
  • Fixed: Input system would mess up under Linux, particularly for the menu using --stdin.
  • Fixed: Where --dump would output greater numbers than one specified with --length.
  • Fixed: Where --dump kept resetting the position numbers on its left.

0.4.1

20 Mar 22:54

Choose a tag to compare

Further cleaning and fix a little thing.

Changelog

  • Added: Mac OS Roman (Windows-10000) character transcoding.
  • Fixed: Selecting a character set on Windows and dump mode forgot to set the output encoding to utf-8.