ThreadCount Community edition

Uniform stock management for healthcare linen rooms: the coordinator app, the phone counter and the staff app, for your own server. Built from a113353 on 2026-09-15. Licensed under the Functional Source License (FSL-1.1-ALv2).
This commit is contained in:
ThreadCount
2026-09-15 22:54:09 +10:00
commit a6f1059ddf
424 changed files with 53535 additions and 0 deletions
@@ -0,0 +1,86 @@
---
title: Keyboard and scanner
section: reference
order: 3
summary: Setting up a USB barcode scanner, the symbologies ThreadCount reads and prints, the keys the screens answer to, and how printing works.
screen: Counter, Stock Count, Stock On hand
role: Admin or Issuer
keywords: usb scanner, keyboard wedge, enter, suffix, barcode, ean-13, code 128, keyboard, shortcut, escape, tab, print, labels, slip, pop-up
---
## Setting up a USB scanner
ThreadCount has no scanner driver. A USB scanner in keyboard mode (keyboard wedge) types the code into whichever field has focus, and the field acts when it receives Enter.
1. **Set the scanner to keyboard mode.** Most are out of the box; the scanner's own manual has the setup barcode.
2. **Set the suffix to Enter (carriage return).** A Tab suffix moves focus instead, and nothing is recorded.
3. **Click into the scan field first.** Keystrokes that land anywhere else do nothing. No screen listens for a scan outside its field.
4. **Scan a known garment to test.** On `Stock Count` its count goes up by 1.
Spaces before and after the code are trimmed.
## Where a scan goes
| Screen | Field | What Enter does |
|---|---|---|
| `Counter` | `Scan barcode, then Enter`, under `2 · Scan items` | Adds 1 of that size to the pickup; a repeat scan adds another |
| `Stock Count` | `Scan barcode to count +1, then Enter`, focused on arrival | Adds 1 to that size's count |
| `Stock On hand Scan to add` | `Scan with a USB scanner, or type the code and press Enter`, focused on open | Finds the garment, or offers to add it |
| A garment's page, `Scan sizes` | The size prompt, focused on open | Binds the code to the chosen size |
| A garment's page, a size's barcode field | The code | Saves it |
A code nobody has bound, or one bound to an archived garment, opens `Unknown barcode` on `Counter` and `Stock Count`. An Admin picks the garment and size to bind it; an Issuer is told only an Admin can. See [barcodes](/docs/stock/barcodes).
## Formats
| Where | Formats |
|---|---|
| USB scanner | Whatever the scanner types. A binding keeps up to 64 characters. |
| Camera, in the browser and the counter app | EAN-13, EAN-8, UPC-A, UPC-E, Code 128, Code 39, Code 93 |
| Printed labels | EAN-13 for a valid 13-digit code, Code 128 for anything else |
`Generate barcodes` on a garment's page gives each size with no code a 13-digit EAN-13 starting `29`, the GS1 range reserved for use inside one organisation, so any scanner reads it.
At a window 780 pixels wide or narrower, a `SCAN` button sits at the bottom right. On `Counter` and `Stock Count` it opens the camera for that screen; anywhere else it opens search with the camera running, to find a person, a garment or an order. It hides while a dialog is open. Which browsers can use the camera is on [scanning and browsers](/docs/apps/scanning-and-browsers).
## Keys the screens answer to
ThreadCount has no single-key shortcuts. These are the keys the screens handle.
| Key | Where | Does |
|---|---|---|
| Enter | The scan fields above | Records the scan |
| Enter | `Settings Issuing rules`, `New staff group` | Adds the group |
| Enter | A `Rename` dialog, `New name` | Saves |
| Enter | A garment's page, `Add a size` | Adds the size |
| Escape | Any dialog | Closes it |
| Tab, Shift+Tab | Any dialog | Moves round the dialog's controls without leaving it |
| Down arrow | Staff record, `Manager` search | Moves from the search box to the first match |
| Up and Down arrows | The manager matches | Move between names |
| Escape | `Manager` search while changing | Cancels the change |
## Keys in this manual
The manual has its own keys, on the website at `/docs` and inside the app under `Help`.
| Key | Where | Does |
|---|---|---|
| / | Any manual page, when you are not typing in a field | Puts the cursor in the search box |
| Up and Down arrows | The search results | Move between results |
| Enter | The search results | Opens the highlighted page, at the matching section when the match was a heading |
| Escape | The search box | Closes the results |
Every manual page also has `Print` and `Copy link` in the rail beside the page, on a wide enough screen. A printed manual page leaves off the section tree and the rail.
## Printing
Printing uses the browser's own print dialog. Two routes lead there.
- **A print page in a new tab** opens the dialog after half a second and keeps a `Print` button for another try. These are the collection or delivery slip (1 to 3 copies), the order form (`Print the form` on a staff record or a request), the supplier order sheet (`Print` in the order list, `Order sheet` on an order) and labels (`Print labels` on a garment's page).
- **A print window** carries the document itself: `Print` on `Reports`, which prints the selected tab, `Print count sheet` on `Stock Count`, `Print credit slip` on `Counter`, and the hand-in receipt. If the browser blocks it, ThreadCount says `Pop-up blocked — allow pop-ups for ThreadCount to print.`
The label sheet holds 6 labels to an A4 page. From a garment's page it prints one label per garment on hand for each size with a code, after you confirm the number. A single code prints 1 to 24 copies, 6 unless set.
The menu, the mobile bar and the `SCAN` button are left off a printed screen.
> **Careful** The counter app cannot print. A print page opened there says `This app can't print. Open this page in a browser — on the computer at the counter — to print it.`