init capabilities
This commit is contained in:
parent
e420575eb6
commit
2b1374681f
26
.github/ISSUE_TEMPLATE.md
vendored
26
.github/ISSUE_TEMPLATE.md
vendored
@ -1,26 +0,0 @@
|
||||
<!--
|
||||
Please feel free to delete any sections that aren't relevant.
|
||||
-->
|
||||
|
||||
<!-- mark with x between the [ ] -->
|
||||
I have:
|
||||
- [ ] searched open and closed issues for duplicates
|
||||
|
||||
### Bug description
|
||||
|
||||
### Steps to reproduce
|
||||
- add your steps here
|
||||
- as a list
|
||||
- using hyphens
|
||||
|
||||
### Device info
|
||||
<!-- Replace examples with your info -->
|
||||
**Printer:** Manufacturer Model XVI
|
||||
|
||||
<!-- since version 2.0.1 you can type 'python-escpos version' in your shell.
|
||||
Alternatively you could use '__version__' in module escpos. -->
|
||||
**python-escpos version:** 0.0.0
|
||||
|
||||
**python version:** 0.0
|
||||
|
||||
**operating system:**
|
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,10 +0,0 @@
|
||||
### Contributor checklist
|
||||
<!-- mark with x between the brackets -->
|
||||
- [ ] I have read the CONTRIBUTING.rst
|
||||
- [ ] I have tested my contribution on these devices:
|
||||
* e.g. Epson TM-T88II
|
||||
- [ ] My contribution is ready to be merged as is
|
||||
|
||||
----------
|
||||
|
||||
### Description
|
23
.github/dependabot.yml
vendored
23
.github/dependabot.yml
vendored
@ -1,23 +0,0 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "pip" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "daily"
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/doc"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
- package-ecosystem: "gitsubmodule"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "daily"
|
10
.github/workflows/black.yml
vendored
10
.github/workflows/black.yml
vendored
@ -1,10 +0,0 @@
|
||||
name: Lint
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: psf/black@stable
|
71
.github/workflows/codeql-analysis.yml
vendored
71
.github/workflows/codeql-analysis.yml
vendored
@ -1,71 +0,0 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [master]
|
||||
schedule:
|
||||
- cron: '0 1 * * 5'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Override automatic language detection by changing the below list
|
||||
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
|
||||
language: ['python']
|
||||
# Learn more...
|
||||
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
|
||||
# If this run was triggered by a pull request event, then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
- run: git checkout HEAD^2
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
31
.github/workflows/documentation.yml
vendored
31
.github/workflows/documentation.yml
vendored
@ -1,31 +0,0 @@
|
||||
# This is a basic workflow to help you get started with Actions
|
||||
|
||||
name: Documentation build
|
||||
|
||||
# Controls when the action will run. Triggers the workflow on push or pull request
|
||||
# events but only for the master branch
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||
jobs:
|
||||
# This workflow contains a single job called "docs"
|
||||
docs:
|
||||
# The type of runner that the job will run on
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
- name: Install packages
|
||||
run:
|
||||
sudo apt-get update -y &&
|
||||
sudo apt-get install -y git python3-sphinx graphviz libenchant1c2a &&
|
||||
sudo pip install tox
|
||||
- name: Test doc build
|
||||
run: tox -e docs
|
43
.github/workflows/pythonpackage.yml
vendored
43
.github/workflows/pythonpackage.yml
vendored
@ -1,43 +0,0 @@
|
||||
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
|
||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
|
||||
|
||||
name: Python package
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: ['3.6', '3.7', '3.8', '3.9', '3.10']
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install flake8 pytest tox tox-gh-actions
|
||||
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
||||
- name: Lint with flake8
|
||||
run: |
|
||||
# stop the build if there are Python syntax errors or undefined names
|
||||
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
|
||||
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
|
||||
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
|
||||
- name: Test with tox
|
||||
run: |
|
||||
tox
|
||||
env:
|
||||
ESCPOS_CAPABILITIES_FILE: /home/runner/work/python-escpos/python-escpos/capabilities-data/dist/capabilities.json
|
3
capabilities-data/.gitignore
vendored
Normal file
3
capabilities-data/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
*.swp
|
||||
*.swo
|
||||
*.swn
|
13
capabilities-data/.travis.yml
Normal file
13
capabilities-data/.travis.yml
Normal file
@ -0,0 +1,13 @@
|
||||
---
|
||||
dist: trusty
|
||||
|
||||
language: python
|
||||
|
||||
install:
|
||||
- sudo pip install yamllint
|
||||
- pip install pyyaml pyaml
|
||||
|
||||
script:
|
||||
- find data/ -name '*.yml' | xargs yamllint
|
||||
- python scripts/collate.py
|
||||
...
|
395
capabilities-data/LICENSE.md
Normal file
395
capabilities-data/LICENSE.md
Normal file
@ -0,0 +1,395 @@
|
||||
Attribution 4.0 International
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More_considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution 4.0 International Public License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution 4.0 International Public License ("Public License"). To the
|
||||
extent this Public License may be interpreted as a contract, You are
|
||||
granted the Licensed Rights in consideration of Your acceptance of
|
||||
these terms and conditions, and the Licensor grants You such rights in
|
||||
consideration of benefits the Licensor receives from making the
|
||||
Licensed Material available under these terms and conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright
|
||||
and Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
d. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
e. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
f. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
g. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
h. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
i. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
j. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
k. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
4. If You Share Adapted Material You produce, the Adapter's
|
||||
License You apply must not prevent recipients of the Adapted
|
||||
Material from complying with this Public License.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material; and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public
|
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||
its public licenses to material it publishes and in those instances
|
||||
will be considered the “Licensor.” The text of the Creative Commons
|
||||
public licenses is dedicated to the public domain under the CC0 Public
|
||||
Domain Dedication. Except for the limited purpose of indicating that
|
||||
material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
37
capabilities-data/README.md
Normal file
37
capabilities-data/README.md
Normal file
@ -0,0 +1,37 @@
|
||||
# ESC/POS printer database [](https://travis-ci.org/receipt-print-hq/escpos-printer-db)
|
||||
|
||||
This is a community-maintained database of thermal receipt printer capabilities.
|
||||
|
||||
The capability data is shared by multiple open source receipt printing projects,
|
||||
to allow improvements in hardware support, compatibility and localization.
|
||||
|
||||
Only features of ESC/POS printers are tracked at this stage. If you have a ZPL,
|
||||
DPL, or ESC/P printer, it is not in-scope for being listed in this database.
|
||||
|
||||
## Browse
|
||||
|
||||
A browsable version of the printer database is hosted [here](https://mike42.me/escpos-printer-db). The single-page app that hosts this data is [also open to contributions](https://github.com/receipt-print-hq/escpos-printer-db-browser).
|
||||
|
||||
The [data/](https://github.com/receipt-print-hq/escpos-printer-db/tree/master/data) directory in this repository contains the actual printer data, and is where you should send corrections.
|
||||
|
||||
## Contribute
|
||||
|
||||
This project is open to any kind of contribution, eg.
|
||||
|
||||
- Submitting information about your printer
|
||||
- Writing new profiles
|
||||
- Typing up legacy code pages
|
||||
|
||||
### Add your printer
|
||||
|
||||
See: [How to get your printer included in the database](https://github.com/receipt-print-hq/escpos-printer-db/blob/master/doc/add-your-printer.md)
|
||||
|
||||
## License
|
||||
|
||||
This data and documentation is provided under [Creative Commons Attribution 4.0](https://creativecommons.org/licenses/by/4.0/). See LICENSE.md for details.
|
||||
|
||||
## Participating projects
|
||||
|
||||
- [python-escpos](https://github.com/python-escpos/python-escpos)
|
||||
- [escpos-php](https://github.com/mike42/escpos-php)
|
||||
|
668
capabilities-data/data/encoding.yml
Normal file
668
capabilities-data/data/encoding.yml
Normal file
@ -0,0 +1,668 @@
|
||||
# encoding.yml: This file maps known code pages and other character encodings
|
||||
# to a method of encoding.
|
||||
#
|
||||
# Its purpose is to account for the use of different code page names and
|
||||
# implementations, so that drivers have a common data set to use for converting
|
||||
# UTF-8 text into something that a printer is likely to understand.
|
||||
#
|
||||
# Where multiple encoders are listed, any of them can be used to give identical
|
||||
# results.
|
||||
|
||||
---
|
||||
CP037:
|
||||
iconv: CP037
|
||||
python_encode: cp037
|
||||
|
||||
CP038:
|
||||
iconv: CP038
|
||||
|
||||
CP273:
|
||||
iconv: CP273
|
||||
python_encode: cp273
|
||||
|
||||
CP274:
|
||||
iconv: CP274
|
||||
|
||||
CP275:
|
||||
iconv: CP275
|
||||
|
||||
CP278:
|
||||
iconv: CP278
|
||||
|
||||
CP280:
|
||||
iconv: CP280
|
||||
|
||||
CP281:
|
||||
iconv: CP281
|
||||
|
||||
CP282:
|
||||
iconv: CP282
|
||||
|
||||
CP284:
|
||||
iconv: CP284
|
||||
|
||||
CP285:
|
||||
iconv: CP285
|
||||
|
||||
CP290:
|
||||
iconv: CP290
|
||||
|
||||
CP297:
|
||||
iconv: CP297
|
||||
|
||||
CP367:
|
||||
iconv: CP367
|
||||
|
||||
CP420:
|
||||
iconv: CP420
|
||||
|
||||
CP423:
|
||||
iconv: CP423
|
||||
|
||||
CP424:
|
||||
iconv: CP424
|
||||
python_encode: cp424
|
||||
|
||||
CP437:
|
||||
iconv: CP437
|
||||
python_encode: cp437
|
||||
|
||||
CP500:
|
||||
iconv: CP500
|
||||
python_encode: cp500
|
||||
|
||||
CP720:
|
||||
python_encode: cp720
|
||||
|
||||
CP737:
|
||||
iconv: CP737
|
||||
python_encode: cp737
|
||||
|
||||
CP747: {}
|
||||
|
||||
CP770:
|
||||
iconv: CP770
|
||||
|
||||
CP771:
|
||||
iconv: CP771
|
||||
|
||||
CP772:
|
||||
iconv: CP772
|
||||
|
||||
CP773:
|
||||
iconv: CP773
|
||||
|
||||
CP774:
|
||||
iconv: CP774
|
||||
|
||||
CP775:
|
||||
iconv: CP775
|
||||
python_encode: cp775
|
||||
|
||||
CP803:
|
||||
iconv: CP803
|
||||
|
||||
CP813:
|
||||
iconv: CP813
|
||||
|
||||
CP819:
|
||||
iconv: CP819
|
||||
|
||||
CP850:
|
||||
iconv: CP850
|
||||
python_encode: cp850
|
||||
|
||||
CP851:
|
||||
name: "Greek CP851"
|
||||
notes: "Not used, due to inconsistencies between implementations."
|
||||
|
||||
CP852:
|
||||
iconv: CP852
|
||||
python_encode: cp852
|
||||
|
||||
CP853: {}
|
||||
|
||||
CP855:
|
||||
iconv: CP855
|
||||
python_encode: cp855
|
||||
|
||||
CP856:
|
||||
iconv: CP856
|
||||
python_encode: cp856
|
||||
|
||||
CP857:
|
||||
iconv: CP857
|
||||
python_encode: cp857
|
||||
|
||||
CP858:
|
||||
python_encode: cp858
|
||||
|
||||
CP860:
|
||||
iconv: CP860
|
||||
python_encode: cp860
|
||||
|
||||
CP861:
|
||||
iconv: CP861
|
||||
python_encode: cp861
|
||||
|
||||
CP862:
|
||||
iconv: CP862
|
||||
python_encode: cp862
|
||||
|
||||
CP863:
|
||||
iconv: CP863
|
||||
python_encode: cp863
|
||||
|
||||
CP864:
|
||||
iconv: CP864
|
||||
python_encode: cp864
|
||||
|
||||
CP865:
|
||||
iconv: CP865
|
||||
python_encode: cp865
|
||||
|
||||
CP866:
|
||||
iconv: CP866
|
||||
python_encode: cp866
|
||||
|
||||
CP866NAV:
|
||||
iconv: CP866NAV
|
||||
|
||||
CP868:
|
||||
iconv: CP868
|
||||
|
||||
CP869:
|
||||
iconv: CP869
|
||||
python_encode: cp869
|
||||
|
||||
CP870:
|
||||
iconv: CP870
|
||||
|
||||
CP871:
|
||||
iconv: CP871
|
||||
|
||||
CP874:
|
||||
iconv: CP874
|
||||
python_encode: cp874
|
||||
|
||||
CP875:
|
||||
iconv: CP875
|
||||
python_encode: cp875
|
||||
|
||||
CP880:
|
||||
iconv: CP880
|
||||
|
||||
CP891:
|
||||
iconv: CP891
|
||||
|
||||
CP901:
|
||||
iconv: CP901
|
||||
|
||||
CP902:
|
||||
iconv: CP902
|
||||
|
||||
CP903:
|
||||
iconv: CP903
|
||||
|
||||
CP904:
|
||||
iconv: CP904
|
||||
|
||||
CP905:
|
||||
iconv: CP905
|
||||
|
||||
CP912:
|
||||
iconv: CP912
|
||||
|
||||
CP915:
|
||||
iconv: CP915
|
||||
|
||||
CP916:
|
||||
iconv: CP916
|
||||
|
||||
CP918:
|
||||
iconv: CP918
|
||||
|
||||
CP920:
|
||||
iconv: CP920
|
||||
|
||||
CP921:
|
||||
iconv: CP921
|
||||
|
||||
CP922:
|
||||
iconv: CP922
|
||||
|
||||
CP928: {}
|
||||
|
||||
CP930:
|
||||
iconv: CP930
|
||||
|
||||
CP932:
|
||||
iconv: CP932
|
||||
python_encode: cp932
|
||||
|
||||
CP933:
|
||||
iconv: CP933
|
||||
|
||||
CP935:
|
||||
iconv: CP935
|
||||
|
||||
CP936:
|
||||
iconv: CP936
|
||||
|
||||
CP937:
|
||||
iconv: CP937
|
||||
|
||||
CP939:
|
||||
iconv: CP939
|
||||
|
||||
CP949:
|
||||
iconv: CP949
|
||||
python_encode: cp949
|
||||
|
||||
CP950:
|
||||
iconv: CP950
|
||||
python_encode: cp950
|
||||
|
||||
CP1001:
|
||||
name: Unimplemented Star-specific CP1001
|
||||
|
||||
CP1004:
|
||||
iconv: CP1004
|
||||
|
||||
CP1006:
|
||||
python_encode: cp1006
|
||||
|
||||
CP1008:
|
||||
iconv: CP1008
|
||||
|
||||
CP1025:
|
||||
iconv: CP1025
|
||||
|
||||
CP1026:
|
||||
iconv: CP1026
|
||||
python_encode: cp1026
|
||||
|
||||
CP1046:
|
||||
iconv: CP1046
|
||||
|
||||
CP1047:
|
||||
iconv: CP1047
|
||||
|
||||
CP1070:
|
||||
iconv: CP1070
|
||||
|
||||
CP1079:
|
||||
iconv: CP1079
|
||||
|
||||
CP1081:
|
||||
iconv: CP1081
|
||||
|
||||
CP1084:
|
||||
iconv: CP1084
|
||||
|
||||
CP1089:
|
||||
iconv: CP1089
|
||||
|
||||
CP1097:
|
||||
iconv: CP1097
|
||||
|
||||
CP1098: {}
|
||||
|
||||
CP1112:
|
||||
iconv: CP1112
|
||||
|
||||
CP1122:
|
||||
iconv: CP1122
|
||||
|
||||
CP1123:
|
||||
iconv: CP1123
|
||||
|
||||
CP1124:
|
||||
iconv: CP1124
|
||||
|
||||
CP1125:
|
||||
iconv: CP1125
|
||||
python_encode: cp1125
|
||||
|
||||
CP1129:
|
||||
iconv: CP1129
|
||||
|
||||
CP1130:
|
||||
iconv: CP1130
|
||||
|
||||
CP1132:
|
||||
iconv: CP1132
|
||||
|
||||
CP1133:
|
||||
iconv: CP1133
|
||||
|
||||
CP1137:
|
||||
iconv: CP1137
|
||||
|
||||
CP1140:
|
||||
iconv: CP1140
|
||||
python_encode: cp1140
|
||||
|
||||
CP1141:
|
||||
iconv: CP1141
|
||||
|
||||
CP1142:
|
||||
iconv: CP1142
|
||||
|
||||
CP1143:
|
||||
iconv: CP1143
|
||||
|
||||
CP1144:
|
||||
iconv: CP1144
|
||||
|
||||
CP1145:
|
||||
iconv: CP1145
|
||||
|
||||
CP1146:
|
||||
iconv: CP1146
|
||||
|
||||
CP1147:
|
||||
iconv: CP1147
|
||||
|
||||
CP1148:
|
||||
iconv: CP1148
|
||||
|
||||
CP1149:
|
||||
iconv: CP1149
|
||||
|
||||
CP1153:
|
||||
iconv: CP1153
|
||||
|
||||
CP1154:
|
||||
iconv: CP1154
|
||||
|
||||
CP1155:
|
||||
iconv: CP1155
|
||||
|
||||
CP1156:
|
||||
iconv: CP1156
|
||||
|
||||
CP1157:
|
||||
iconv: CP1157
|
||||
|
||||
CP1158:
|
||||
iconv: CP1158
|
||||
|
||||
CP1160:
|
||||
iconv: CP1160
|
||||
|
||||
CP1161:
|
||||
iconv: CP1161
|
||||
|
||||
CP1162:
|
||||
iconv: CP1162
|
||||
|
||||
CP1163:
|
||||
iconv: CP1163
|
||||
|
||||
CP1164:
|
||||
iconv: CP1164
|
||||
|
||||
CP1166:
|
||||
iconv: CP1166
|
||||
|
||||
CP1167:
|
||||
iconv: CP1167
|
||||
|
||||
CP1250:
|
||||
iconv: CP1250
|
||||
python_encode: cp1250
|
||||
|
||||
CP1251:
|
||||
iconv: CP1251
|
||||
python_encode: cp1251
|
||||
|
||||
CP1252:
|
||||
iconv: CP1252
|
||||
python_encode: cp1252
|
||||
|
||||
CP1253:
|
||||
iconv: CP1253
|
||||
python_encode: cp1253
|
||||
|
||||
CP1254:
|
||||
iconv: CP1254
|
||||
python_encode: cp1254
|
||||
|
||||
CP1255:
|
||||
iconv: CP1255
|
||||
python_encode: cp1255
|
||||
|
||||
CP1256:
|
||||
iconv: CP1256
|
||||
python_encode: cp1256
|
||||
|
||||
CP1257:
|
||||
iconv: CP1257
|
||||
python_encode: cp1257
|
||||
|
||||
CP1258:
|
||||
iconv: CP1258
|
||||
python_encode: cp1258
|
||||
|
||||
CP1282:
|
||||
iconv: CP1282
|
||||
|
||||
CP1361:
|
||||
iconv: CP1361
|
||||
|
||||
CP1364:
|
||||
iconv: CP1364
|
||||
|
||||
CP1371:
|
||||
iconv: CP1371
|
||||
|
||||
CP1388:
|
||||
iconv: CP1388
|
||||
|
||||
CP1390:
|
||||
iconv: CP1390
|
||||
|
||||
CP1399:
|
||||
iconv: CP1399
|
||||
|
||||
CP2001:
|
||||
name: Unimplemented Star-specific CP2001
|
||||
|
||||
CP3001:
|
||||
name: Unimplemented Star-specific CP3001
|
||||
|
||||
CP3002:
|
||||
name: Unimplemented Star-specific CP3002
|
||||
|
||||
CP3011:
|
||||
name: "CP3011 Latvian"
|
||||
data:
|
||||
- "ÇüéâäàåçêëèïîìÄÅ"
|
||||
- "ÉæÆôöòûùÿÖÜ¢£¥₧ƒ"
|
||||
- "áíóúñѪº¿⌐¬½¼¡«»"
|
||||
- "░▒▓│┤Ā╢ņ╕╣║╗╝╜╛┐"
|
||||
- "└┴┬├─┼ā╟╚╔╩╦╠═╬╧"
|
||||
- "Š╤čČ╘╒ģĪī┘┌█▄ūŪ▀"
|
||||
- "αßΓπΣσµτΦΘΩδ∞φε∩"
|
||||
- "ĒēĢķĶļĻžŽ∙·√Ņš■ "
|
||||
|
||||
CP3012:
|
||||
name: "CP3012 Cyrillic"
|
||||
data:
|
||||
- "АБВГДЕЖЗИЙКЛМНОП"
|
||||
- "РСТУФХЦЧШЩЪЫЬЭЮЯ"
|
||||
- "абвгдежзийклмноп"
|
||||
- "░▒▓│┤Ā╢ņ╕╣║╗╝Ō╛┐"
|
||||
- "└┴┬├─┼ā╟╚╔╩╦╠═╬╧"
|
||||
- "Š╤čČ╘╒ģĪī┘┌█▄ūŪ▀"
|
||||
- "рстуфхцчшщъыьэюя"
|
||||
- "ĒēĢķĶļĻžŽ∙·√Ņš■ "
|
||||
|
||||
CP3021:
|
||||
name: Unimplemented Star-specific CP3021
|
||||
|
||||
CP3041:
|
||||
name: Unimplemented Star-specific CP3041
|
||||
|
||||
CP3840:
|
||||
name: Unimplemented Star-specific CP3840
|
||||
|
||||
CP3841:
|
||||
name: Unimplemented Star-specific CP3841
|
||||
|
||||
CP3843:
|
||||
name: Unimplemented Star-specific CP3843
|
||||
|
||||
CP3844:
|
||||
name: Unimplemented Star-specific CP3844
|
||||
|
||||
CP3845:
|
||||
name: Unimplemented Star-specific CP3845
|
||||
|
||||
CP3847:
|
||||
name: Unimplemented Star-specific CP3847
|
||||
|
||||
CP3846:
|
||||
name: Unimplemented Star-specific CP3846
|
||||
|
||||
CP3848:
|
||||
name: Unimplemented Star-specific CP3848
|
||||
|
||||
CP4517:
|
||||
iconv: CP4517
|
||||
|
||||
CP4899:
|
||||
iconv: CP4899
|
||||
|
||||
CP4909:
|
||||
iconv: CP4909
|
||||
|
||||
CP4971:
|
||||
iconv: CP4971
|
||||
|
||||
CP5347:
|
||||
iconv: CP5347
|
||||
|
||||
CP9030:
|
||||
iconv: CP9030
|
||||
|
||||
CP9066:
|
||||
iconv: CP9066
|
||||
|
||||
CP9448:
|
||||
iconv: CP9448
|
||||
|
||||
CP10007:
|
||||
iconv: CP10007
|
||||
|
||||
CP12712:
|
||||
iconv: CP12712
|
||||
|
||||
CP16804:
|
||||
iconv: CP16804
|
||||
|
||||
ISO_8859-1:
|
||||
iconv: "ISO_8859-1"
|
||||
python_encode: "latin_1"
|
||||
|
||||
ISO_8859-2:
|
||||
iconv: "ISO_8859-2"
|
||||
python_encode: "iso8859_2"
|
||||
|
||||
ISO_8859-3:
|
||||
iconv: "ISO_8859-3"
|
||||
python_encode: "iso8859_3"
|
||||
|
||||
ISO_8859-4:
|
||||
iconv: "ISO_8859-4"
|
||||
python_encode: "iso8859_4"
|
||||
|
||||
ISO_8859-5:
|
||||
iconv: "ISO_8859-5"
|
||||
python_encode: "iso8859_5"
|
||||
|
||||
ISO_8859-6:
|
||||
iconv: "ISO_8859-6"
|
||||
python_encode: "iso8859_6"
|
||||
|
||||
ISO_8859-7:
|
||||
iconv: "ISO_8859-7"
|
||||
python_encode: "iso8859_7"
|
||||
|
||||
ISO_8859-8:
|
||||
iconv: "ISO_8859-8"
|
||||
python_encode: "iso8859_8"
|
||||
|
||||
ISO_8859-9:
|
||||
iconv: "ISO_8859-9"
|
||||
python_encode: "iso8859_9"
|
||||
|
||||
ISO_8859-10:
|
||||
iconv: "ISO_8859-10"
|
||||
python_encode: "iso8859-10"
|
||||
|
||||
ISO_8859-11:
|
||||
iconv: "ISO_8859-11"
|
||||
python_encode: "iso8859-11"
|
||||
|
||||
ISO_8859-13:
|
||||
iconv: "ISO_8859-13"
|
||||
python_encode: "iso8859-13"
|
||||
|
||||
ISO_8859-14:
|
||||
iconv: "ISO_8859-14"
|
||||
python_encode: "iso8859-14"
|
||||
|
||||
ISO_8859-15:
|
||||
iconv: "ISO_8859-15"
|
||||
python_encode: "iso8859-15"
|
||||
|
||||
ISO_8859-16:
|
||||
iconv: "ISO_8859-16"
|
||||
python_encode: "iso8859_16"
|
||||
|
||||
RK1048:
|
||||
iconv: RK1048
|
||||
|
||||
TCVN-3-1:
|
||||
name: "Vietnamese TCVN-3 1"
|
||||
data:
|
||||
- " "
|
||||
- " "
|
||||
- " ăâêôơưđ "
|
||||
- " àảãáạ ằẳẵắ "
|
||||
- " ặầẩẫấậè ẻẽ"
|
||||
- "éẹềểễếệìỉ ĩíịò"
|
||||
- " ỏõóọồổỗốộờởỡớợù"
|
||||
- " ủũúụừửữứựỳỷỹýỵ "
|
||||
|
||||
TCVN-3-2:
|
||||
name: "Vietnamese TCVN-3 1"
|
||||
data:
|
||||
- " "
|
||||
- " "
|
||||
- " ĂÂ Ð ÊÔƠƯ "
|
||||
- " ÀẢÃÁẠ ẰẲẴẮ "
|
||||
- " ẶẦẨẪẤẬÈ ẺẼ"
|
||||
- "ÉẸỀỂỄẾỆÌỈ ĨÍỊÒ"
|
||||
- " ỎÕÓỌỒỔỖỐỘỜỞỠỚỢÙ"
|
||||
- " ỦŨÚỤỪỬỮỨỰỲỶỸÝỴ "
|
||||
|
||||
OXHOO-EUROPEAN:
|
||||
name: Oxhoo-specific European
|
||||
data:
|
||||
- "ÇüéâäàåçêëèïîìÄÅ"
|
||||
- "ÉæÆôöòûùÿÖÜñѪº¿"
|
||||
- "áíóú¢£¥₧ƒ¡ÃãÕõØø"
|
||||
- "·¨°`´½¼×÷≤≥«»≠√¯"
|
||||
- "⌠⌡∞◤↵↑↓→←┌┐└┘•®©"
|
||||
# Some unidentified chars
|
||||
- "™†§¶Γ◢Θ "
|
||||
- "ß ε "
|
||||
- "τ "
|
||||
|
||||
Unknown:
|
||||
name: Unknown
|
||||
notes: Code page that has not yet been identified.
|
||||
...
|
29
capabilities-data/data/profile/AF-240.yml
Normal file
29
capabilities-data/data/profile/AF-240.yml
Normal file
@ -0,0 +1,29 @@
|
||||
---
|
||||
AF-240:
|
||||
name: AF-240 Customer Display
|
||||
vendor: Oxhoo
|
||||
inherits: simple
|
||||
features:
|
||||
bitImageRaster: false
|
||||
bitImageColumn: false
|
||||
graphics: false
|
||||
highDensity: false
|
||||
pulseStandard: false
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 20
|
||||
media:
|
||||
width:
|
||||
# Approximate measurement
|
||||
mm: 120
|
||||
# 5x7 pixels per char, by 20 columns.
|
||||
pixels: 100
|
||||
notes: >
|
||||
This is a two-line, ESC/POS-aware customer display from Oxhoo. The ESC/POS
|
||||
command mode can be activated persistently by sending:
|
||||
|
||||
echo -ne "\n\x02\x05\x43\x31\x03" > /dev/ttyUSB0
|
||||
codePages:
|
||||
0: OXHOO-EUROPEAN
|
||||
...
|
70
capabilities-data/data/profile/CT-S651.yml
Normal file
70
capabilities-data/data/profile/CT-S651.yml
Normal file
@ -0,0 +1,70 @@
|
||||
---
|
||||
CT-S651:
|
||||
name: CT-S651
|
||||
vendor: "Citizen"
|
||||
inherits: default
|
||||
notes: >
|
||||
Citizen CT-S651 profile. This is a two-color thermal printer,
|
||||
supporting paper sizes from 58mm up to 83mm
|
||||
features:
|
||||
barcodeA: true
|
||||
barcodeB: true
|
||||
bitImageRaster: true
|
||||
bitImageColumn: true
|
||||
graphics: true
|
||||
starCommands: false
|
||||
qrCode: true
|
||||
pdf417Code: true
|
||||
highDensity: true
|
||||
pulseStandard: true
|
||||
pulseBel: true
|
||||
paperFullCut: true
|
||||
paperPartCut: true
|
||||
colors:
|
||||
0: black
|
||||
1: red
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 48
|
||||
1:
|
||||
name: Font B
|
||||
columns: 64
|
||||
2:
|
||||
name: Font C
|
||||
columns: 72
|
||||
media:
|
||||
width:
|
||||
mm: 80
|
||||
pixels: 640
|
||||
codePages:
|
||||
0: CP437
|
||||
1: CP932
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
6: CP852
|
||||
7: CP866
|
||||
8: CP857
|
||||
9: CP1252
|
||||
16: CP1252
|
||||
17: CP866
|
||||
18: CP852
|
||||
19: CP858
|
||||
# Thai code11 1 Pass
|
||||
20: Unknown
|
||||
# Thai code11 3 Pass
|
||||
21: Unknown
|
||||
# Thai code18 1 Pass
|
||||
25: Unknown
|
||||
# Thai code18 3 Pass
|
||||
26: Unknown
|
||||
# TCVN3
|
||||
30: TCVN-3-1
|
||||
# TCVN3 Caps
|
||||
31: TCVN-3-2
|
||||
40: CP864
|
||||
# Space page (For user setting)
|
||||
255: Unknown
|
||||
...
|
8
capabilities-data/data/profile/NT-5890K.yml
Normal file
8
capabilities-data/data/profile/NT-5890K.yml
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
NT-5890K:
|
||||
name: NT-5890K
|
||||
vendor: Netum
|
||||
inherits: POS-5890
|
||||
notes: ""
|
||||
features:
|
||||
bitImageColumn: true
|
50
capabilities-data/data/profile/OCD-100.yml
Normal file
50
capabilities-data/data/profile/OCD-100.yml
Normal file
@ -0,0 +1,50 @@
|
||||
---
|
||||
OCD-100:
|
||||
name: OCD-100 Customer Display
|
||||
vendor: Aures
|
||||
inherits: simple
|
||||
features:
|
||||
bitImageRaster: false
|
||||
bitImageColumn: false
|
||||
graphics: false
|
||||
highDensity: false
|
||||
pulseStandard: false
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 20
|
||||
media:
|
||||
width:
|
||||
# 9x5.25mm per char, by 20 columns.
|
||||
mm: 180
|
||||
# 5x7 pixels per char, by 20 columns.
|
||||
pixels: 100
|
||||
notes: >
|
||||
This is a two-line, ESC/POS-aware customer display from Aures. It has some
|
||||
graphics support via custom fonts, but is otherwise text-only.
|
||||
This profile is also suitable for the OCD-150 pole-mounted display.
|
||||
codePages:
|
||||
0: CP437
|
||||
# Katakana (for Japan)
|
||||
1: CP932
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
# Slawie
|
||||
6: Unknown
|
||||
# Russia
|
||||
7: Unknown
|
||||
# Greek
|
||||
8: Unknown
|
||||
9: CP852
|
||||
10: CP862
|
||||
11: CP866
|
||||
12: CP1251
|
||||
13: CP1254
|
||||
14: CP1255
|
||||
15: CP1257
|
||||
16: CP1252
|
||||
17: CP1253
|
||||
19: CP858
|
||||
...
|
51
capabilities-data/data/profile/OCD-300.yml
Normal file
51
capabilities-data/data/profile/OCD-300.yml
Normal file
@ -0,0 +1,51 @@
|
||||
---
|
||||
OCD-300:
|
||||
name: OCD-300 Customer Display
|
||||
vendor: Aures
|
||||
inherits: simple
|
||||
features:
|
||||
bitImageRaster: false
|
||||
bitImageColumn: false
|
||||
graphics: false
|
||||
highDensity: false
|
||||
pulseStandard: false
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 20
|
||||
media:
|
||||
width:
|
||||
mm: 130.2
|
||||
# 12x32 pixels per char
|
||||
pixels: 240
|
||||
notes: >
|
||||
This is a two-line, ESC/POS-aware customer display from Aures. It has some
|
||||
graphics support via vendor-provided tools, but is otherwise text-only.
|
||||
codePages:
|
||||
0: CP437
|
||||
# Katakana (for Japan)
|
||||
1: CP932
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
# Slawie
|
||||
6: Unknown
|
||||
# Russia
|
||||
7: Unknown
|
||||
# Greek
|
||||
8: Unknown
|
||||
9: CP852
|
||||
10: CP862
|
||||
11: CP866
|
||||
12: CP1251
|
||||
13: CP1254
|
||||
14: CP1255
|
||||
15: CP1257
|
||||
16: CP1252
|
||||
17: CP1253
|
||||
18: CP1250
|
||||
19: CP858
|
||||
# Arabic
|
||||
20: Unknown
|
||||
...
|
96
capabilities-data/data/profile/P822D.yml
Normal file
96
capabilities-data/data/profile/P822D.yml
Normal file
@ -0,0 +1,96 @@
|
||||
---
|
||||
P822D:
|
||||
name: P822D
|
||||
vendor: PBM
|
||||
inherits: default
|
||||
notes: ""
|
||||
features:
|
||||
graphics: false
|
||||
codePages:
|
||||
0: CP437
|
||||
# Katakana
|
||||
1: Unknown
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
# Western Europe
|
||||
6: Unknown
|
||||
# Greek
|
||||
7: Unknown
|
||||
# Hebrew
|
||||
8: Unknown
|
||||
# Eastern europe
|
||||
9: Unknown
|
||||
# Iran
|
||||
10: Unknown
|
||||
16: CP1252
|
||||
17: CP866
|
||||
18: CP852
|
||||
19: CP858
|
||||
# Iran II
|
||||
20: Unknown
|
||||
# latvian
|
||||
21: Unknown
|
||||
# Arabic
|
||||
22: Unknown
|
||||
# PT151, 1251
|
||||
23: Unknown
|
||||
24: CP747
|
||||
25: CP1257
|
||||
# Vietnam
|
||||
27: Unknown
|
||||
28: CP864
|
||||
29: CP1001
|
||||
# Uigur
|
||||
30: Unknown
|
||||
# Hebrew
|
||||
31: Unknown
|
||||
32: CP1255
|
||||
33: CP720
|
||||
34: CP1256
|
||||
35: CP1257
|
||||
# Thai
|
||||
255: Unknown
|
||||
50: CP437
|
||||
# Jatakana
|
||||
51: Unknown
|
||||
52: CP437
|
||||
53: CP858
|
||||
54: CP852
|
||||
55: CP860
|
||||
56: CP861
|
||||
57: CP863
|
||||
58: CP865
|
||||
59: CP866
|
||||
60: CP855
|
||||
61: CP857
|
||||
62: CP862
|
||||
63: CP864
|
||||
64: CP737
|
||||
65: CP851
|
||||
66: CP869
|
||||
67: CP928
|
||||
68: CP772
|
||||
69: CP774
|
||||
70: CP874
|
||||
71: CP1252
|
||||
72: CP1250
|
||||
73: CP1251
|
||||
74: CP3840
|
||||
75: CP3841
|
||||
76: CP3843
|
||||
77: CP3844
|
||||
78: CP3845
|
||||
79: CP3846
|
||||
80: CP3847
|
||||
81: CP3848
|
||||
82: CP1001
|
||||
83: CP2001
|
||||
84: CP3001
|
||||
85: CP3002
|
||||
86: CP3011
|
||||
87: CP3012
|
||||
88: CP3021
|
||||
89: CP3041
|
||||
...
|
100
capabilities-data/data/profile/POS-5890.yml
Normal file
100
capabilities-data/data/profile/POS-5890.yml
Normal file
@ -0,0 +1,100 @@
|
||||
---
|
||||
POS-5890:
|
||||
name: POS5890 Series
|
||||
vendor: Zjiang
|
||||
inherits: simple
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 32
|
||||
1:
|
||||
name: Font B
|
||||
columns: 42
|
||||
media:
|
||||
width:
|
||||
mm: 57.5
|
||||
pixels: 384
|
||||
notes: >
|
||||
POS-5890 thermal printer series, also marketed under various other names.
|
||||
codePages:
|
||||
0: CP437
|
||||
1: CP932
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
# West Europe
|
||||
6: Unknown
|
||||
# Greek
|
||||
7: Unknown
|
||||
# Hebrew
|
||||
8: Unknown
|
||||
# East Europe
|
||||
9: Unknown
|
||||
# Iran
|
||||
10: Unknown
|
||||
16: CP1252
|
||||
17: CP866
|
||||
18: CP852
|
||||
19: CP858
|
||||
# Iran II
|
||||
20: Unknown
|
||||
# Latvian
|
||||
21: Unknown
|
||||
# Arabic
|
||||
22: Unknown
|
||||
# PT151, 1251
|
||||
23: Unknown
|
||||
24: CP747
|
||||
25: CP1257
|
||||
27: CP1258
|
||||
28: CP864
|
||||
# Hebrew
|
||||
31: Unknown
|
||||
32: CP1255
|
||||
50: CP437
|
||||
52: CP437
|
||||
53: CP858
|
||||
54: CP852
|
||||
55: CP860
|
||||
56: CP861
|
||||
57: CP863
|
||||
58: CP865
|
||||
59: CP866
|
||||
60: CP855
|
||||
61: CP857
|
||||
62: CP862
|
||||
63: CP864
|
||||
64: CP737
|
||||
65: CP851
|
||||
66: CP869
|
||||
68: CP772
|
||||
69: CP774
|
||||
71: CP1252
|
||||
72: CP1250
|
||||
73: CP1251
|
||||
74: CP3840
|
||||
76: CP3843
|
||||
77: CP3844
|
||||
78: CP3845
|
||||
79: CP3846
|
||||
80: CP3847
|
||||
81: CP3848
|
||||
83: CP2001
|
||||
84: CP3001
|
||||
85: CP3002
|
||||
86: CP3011
|
||||
87: CP3012
|
||||
88: CP3021
|
||||
89: CP3041
|
||||
90: CP1253
|
||||
91: CP1254
|
||||
92: CP1256
|
||||
93: CP720
|
||||
94: CP1258
|
||||
95: CP775
|
||||
# Thai 2
|
||||
96: Unknown
|
||||
# Thai
|
||||
255: Unknown
|
||||
...
|
63
capabilities-data/data/profile/RP326.yml
Normal file
63
capabilities-data/data/profile/RP326.yml
Normal file
@ -0,0 +1,63 @@
|
||||
---
|
||||
RP326:
|
||||
name: RP326
|
||||
vendor: Rongta
|
||||
inherits: default
|
||||
notes: ""
|
||||
features:
|
||||
graphics: false
|
||||
codePages:
|
||||
0: CP437
|
||||
# Katakana
|
||||
1: Unknown
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
6: CP1251
|
||||
7: CP866
|
||||
# MIK[Cyrillic /Bulgarian]
|
||||
8: Unknown
|
||||
# CP755
|
||||
9: Unknown
|
||||
# Iran
|
||||
10: Unknown
|
||||
15: CP862
|
||||
16: CP1252
|
||||
17: CP1253
|
||||
18: CP852
|
||||
19: CP858
|
||||
# Iran II
|
||||
20: Unknown
|
||||
# Latvian
|
||||
21: Unknown
|
||||
# Arabic
|
||||
22: Unknown
|
||||
23: ISO_8859-1
|
||||
24: CP737
|
||||
25: CP1257
|
||||
# Thai
|
||||
26: Unknown
|
||||
27: CP720
|
||||
28: CP855
|
||||
29: CP857
|
||||
30: CP1250
|
||||
31: CP775
|
||||
32: CP1254
|
||||
33: CP1255
|
||||
34: CP1256
|
||||
35: CP1258
|
||||
36: ISO_8859-2
|
||||
37: ISO_8859-3
|
||||
38: ISO_8859-4
|
||||
39: ISO_8859-5
|
||||
40: ISO_8859-6
|
||||
41: ISO_8859-7
|
||||
42: ISO_8859-8
|
||||
43: ISO_8859-9
|
||||
44: ISO_8859-15
|
||||
# Thai
|
||||
45: Unknown
|
||||
46: CP856
|
||||
47: CP874
|
||||
...
|
67
capabilities-data/data/profile/SP2000.yml
Normal file
67
capabilities-data/data/profile/SP2000.yml
Normal file
@ -0,0 +1,67 @@
|
||||
---
|
||||
SP2000:
|
||||
name: SP2000 Series
|
||||
vendor: Star Micronics
|
||||
inherits: default
|
||||
notes: Star SP2000 impact printer series with ESC/POS emulation enabled
|
||||
features:
|
||||
starCommands: true
|
||||
codePages:
|
||||
# "Normal"
|
||||
0: CP437
|
||||
1: CP437
|
||||
2: CP932
|
||||
3: CP437
|
||||
4: CP858
|
||||
5: CP852
|
||||
6: CP860
|
||||
7: CP861
|
||||
8: CP863
|
||||
9: CP865
|
||||
10: CP866
|
||||
11: CP855
|
||||
12: CP857
|
||||
13: CP862
|
||||
14: CP864
|
||||
15: CP737
|
||||
16: CP851
|
||||
17: CP869
|
||||
18: CP928
|
||||
19: CP772
|
||||
20: CP774
|
||||
21: CP874
|
||||
32: CP1252
|
||||
33: CP1250
|
||||
34: CP1251
|
||||
64: CP3840
|
||||
65: CP3841
|
||||
66: CP3843
|
||||
67: CP3844
|
||||
68: CP3845
|
||||
69: CP3846
|
||||
70: CP3847
|
||||
71: CP3848
|
||||
72: CP1001
|
||||
73: CP2001
|
||||
74: CP3001
|
||||
75: CP3002
|
||||
76: CP3011
|
||||
77: CP3012
|
||||
78: CP3021
|
||||
79: CP3041
|
||||
# Thai Character Code 42
|
||||
96: Unknown
|
||||
# Thai Character Code 11
|
||||
97: Unknown
|
||||
# Thai Character Code 13
|
||||
98: Unknown
|
||||
# Thai Character Code 14
|
||||
99: Unknown
|
||||
# Thai Character Code 16
|
||||
100: Unknown
|
||||
# Thai Character Code 17
|
||||
101: Unknown
|
||||
# Thai Character Code 18
|
||||
102: Unknown
|
||||
255: Unknown
|
||||
...
|
51
capabilities-data/data/profile/Sunmi-V2.yml
Normal file
51
capabilities-data/data/profile/Sunmi-V2.yml
Normal file
@ -0,0 +1,51 @@
|
||||
---
|
||||
Sunmi-V2:
|
||||
name: Sunmi V2
|
||||
vendor: Sunmi
|
||||
notes: >
|
||||
Sunmi mini-POS Android device with a built-in Virtual Bluetooth
|
||||
thermal printer.
|
||||
inherits: default
|
||||
features:
|
||||
# column mode doesn't work reliably on this device
|
||||
bitImageColumn: false
|
||||
bitImageRaster: true
|
||||
# not tested, status unknown
|
||||
graphics: false
|
||||
# has no paper cutter
|
||||
paperFullCut: false
|
||||
paperPartCut: false
|
||||
colors:
|
||||
0: black
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 32
|
||||
1:
|
||||
name: Font B
|
||||
columns: 42
|
||||
media:
|
||||
width:
|
||||
mm: 57.5
|
||||
pixels: 384
|
||||
codePages:
|
||||
0: CP437
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
13: CP857
|
||||
14: CP737
|
||||
15: ISO_8859-7
|
||||
16: CP1252
|
||||
17: CP866
|
||||
18: CP852
|
||||
19: CP858
|
||||
# Thai Character Code 11
|
||||
21: CP874
|
||||
33: CP775
|
||||
34: CP855
|
||||
36: CP862
|
||||
37: CP864
|
||||
254: CP855
|
||||
...
|
9
capabilities-data/data/profile/TEP-200M.yml
Normal file
9
capabilities-data/data/profile/TEP-200M.yml
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
# More info on this printer is posted at
|
||||
# https://github.com/mike42/escpos-php/issues/6
|
||||
TEP-200M:
|
||||
name: TEP200M Series
|
||||
vendor: EPOS
|
||||
notes: ""
|
||||
inherits: default
|
||||
...
|
21
capabilities-data/data/profile/TM-P80-42col.yml
Normal file
21
capabilities-data/data/profile/TM-P80-42col.yml
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
TM-P80-42col:
|
||||
name: TM-P80 (42 column mode)
|
||||
vendor: Epson
|
||||
inherits: TM-P80
|
||||
notes: Portable printer (42-column mode)
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 42
|
||||
1:
|
||||
name: Font B
|
||||
columns: 60
|
||||
2:
|
||||
name: Kanji
|
||||
columns: 21
|
||||
media:
|
||||
width:
|
||||
mm: 63.6
|
||||
pixels: 546
|
||||
...
|
21
capabilities-data/data/profile/TM-P80.yml
Normal file
21
capabilities-data/data/profile/TM-P80.yml
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
TM-P80:
|
||||
name: TM-P80
|
||||
vendor: Epson
|
||||
inherits: default
|
||||
notes: Portable printer (48-column mode)
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 42
|
||||
1:
|
||||
name: Font B
|
||||
columns: 56
|
||||
2:
|
||||
name: Kanji
|
||||
columns: 24
|
||||
media:
|
||||
width:
|
||||
mm: 72
|
||||
pixels: 576
|
||||
...
|
109
capabilities-data/data/profile/TM-T88II.yml
Normal file
109
capabilities-data/data/profile/TM-T88II.yml
Normal file
@ -0,0 +1,109 @@
|
||||
---
|
||||
TM-T88II:
|
||||
name: TM-T88II
|
||||
vendor: "Epson"
|
||||
inherits: default
|
||||
notes: >
|
||||
Epson TM-T88II profile. The specs where taken from a TM-T88IIP machine
|
||||
(I assume the P just stands for parallel port). The standart 80mm paper
|
||||
width version was used here. There is also a custom 58mm factory option.
|
||||
If you are using the custom version change media width to 50.8mm and
|
||||
360px accordingly. This printer is discontinued by the Vendor and has
|
||||
similar feature support to the TM-T88III. The code page mapping is
|
||||
documented in the "TM-T88II/T88III Technical Reference Guide".
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 42
|
||||
1:
|
||||
name: Font B
|
||||
columns: 56
|
||||
media:
|
||||
width:
|
||||
mm: 72
|
||||
pixels: 512
|
||||
codePages:
|
||||
0: CP437
|
||||
1: CP932
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
# Hiragana
|
||||
6: Unknown
|
||||
# One-pass printing Kanji characters
|
||||
7: Unknown
|
||||
# One-pass printing Kanji characters
|
||||
8: Unknown
|
||||
11: Unknown
|
||||
12: Unknown
|
||||
13: CP857
|
||||
14: CP737
|
||||
15: ISO_8859-7
|
||||
16: CP1252
|
||||
17: CP866
|
||||
18: CP852
|
||||
19: Unknown
|
||||
# Thai Character Code 42
|
||||
20: Unknown
|
||||
# Thai Character Code 11
|
||||
21: CP874
|
||||
# Thai Character Code 13
|
||||
22: Unknown
|
||||
# Thai Character Code 14
|
||||
23: Unknown
|
||||
# Thai Character Code 16
|
||||
24: Unknown
|
||||
# Thai Character Code 17
|
||||
25: Unknown
|
||||
# Thai Character Code 18
|
||||
26: Unknown
|
||||
30: TCVN-3-1
|
||||
31: TCVN-3-2
|
||||
32: Unknown
|
||||
33: CP775
|
||||
34: CP855
|
||||
35: CP861
|
||||
36: CP862
|
||||
37: CP864
|
||||
38: CP869
|
||||
39: ISO_8859-2
|
||||
40: ISO_8859-15
|
||||
41: Unknown
|
||||
42: CP774
|
||||
43: CP772
|
||||
44: CP1125
|
||||
45: CP1250
|
||||
46: CP1251
|
||||
47: CP1253
|
||||
48: CP1254
|
||||
49: CP1255
|
||||
50: CP1256
|
||||
51: CP1257
|
||||
52: CP1258
|
||||
53: RK1048
|
||||
# Devanagari
|
||||
66: Unknown
|
||||
# Bengali
|
||||
67: Unknown
|
||||
# Tamil
|
||||
68: Unknown
|
||||
# Telugu
|
||||
69: Unknown
|
||||
# Assamese
|
||||
70: Unknown
|
||||
# Oriya
|
||||
71: Unknown
|
||||
# Kannada
|
||||
72: Unknown
|
||||
# Malayalam
|
||||
73: Unknown
|
||||
# Gujarati
|
||||
74: Unknown
|
||||
# Punjabi
|
||||
75: Unknown
|
||||
# Marathi
|
||||
82: Unknown
|
||||
254: Unknown
|
||||
255: Unknown
|
||||
...
|
22
capabilities-data/data/profile/TM-T88III.yml
Normal file
22
capabilities-data/data/profile/TM-T88III.yml
Normal file
@ -0,0 +1,22 @@
|
||||
---
|
||||
TM-T88III:
|
||||
name: TM-T88III
|
||||
vendor: "Epson"
|
||||
inherits: default
|
||||
notes: >
|
||||
Epson TM-T88III profile. This printer has similar feature support to the
|
||||
TM-T88II. The code page mapping is documented in the
|
||||
"TM-T88II/T88III Technical Reference Guide".
|
||||
codePages:
|
||||
0: CP437
|
||||
1: CP932
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
16: CP1252
|
||||
17: CP866
|
||||
18: CP862
|
||||
19: CP858
|
||||
255: Unknown
|
||||
...
|
25
capabilities-data/data/profile/TM-T88IV-SA.yml
Normal file
25
capabilities-data/data/profile/TM-T88IV-SA.yml
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
TM-T88IV-SA:
|
||||
name: TM-T88IV South Asia
|
||||
vendor: "Epson"
|
||||
inherits: TM-T88IV
|
||||
notes: >
|
||||
Epson TM-T88IV profile (South Asia models)
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 42
|
||||
1:
|
||||
name: Font B
|
||||
columns: 56
|
||||
codePages:
|
||||
0: CP437
|
||||
# Thai Character Code 42
|
||||
20: Unknown
|
||||
# Thai Character Code 11
|
||||
21: CP874
|
||||
# Thai Character Code 18
|
||||
26: Unknown
|
||||
30: TCVN-3-1
|
||||
31: TCVN-3-2
|
||||
...
|
31
capabilities-data/data/profile/TM-T88IV.yml
Normal file
31
capabilities-data/data/profile/TM-T88IV.yml
Normal file
@ -0,0 +1,31 @@
|
||||
---
|
||||
TM-T88IV:
|
||||
name: TM-T88IV
|
||||
vendor: "Epson"
|
||||
inherits: default
|
||||
notes: >
|
||||
Epson TM-T88IV profile
|
||||
media:
|
||||
width:
|
||||
mm: 80
|
||||
pixels: 512
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 42
|
||||
1:
|
||||
name: Font B
|
||||
columns: 56
|
||||
codePages:
|
||||
0: CP437
|
||||
1: CP932
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
16: CP1252
|
||||
17: CP866
|
||||
18: CP852
|
||||
19: CP858
|
||||
255: Unknown
|
||||
...
|
57
capabilities-data/data/profile/TM-T88V.yml
Normal file
57
capabilities-data/data/profile/TM-T88V.yml
Normal file
@ -0,0 +1,57 @@
|
||||
---
|
||||
TM-T88V:
|
||||
name: TM-T88V
|
||||
vendor: "Epson"
|
||||
inherits: default
|
||||
notes: >
|
||||
Epson TM-T88V profile
|
||||
media:
|
||||
width:
|
||||
mm: 80
|
||||
pixels: 512
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 42
|
||||
1:
|
||||
name: Font B
|
||||
columns: 56
|
||||
codePages:
|
||||
0: CP437
|
||||
1: CP932
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
11: CP851
|
||||
12: CP853
|
||||
13: CP857
|
||||
14: CP737
|
||||
15: ISO_8859-7
|
||||
16: CP1252
|
||||
17: CP866
|
||||
18: CP852
|
||||
19: CP858
|
||||
30: TCVN-3-1
|
||||
31: TCVN-3-2
|
||||
32: CP720
|
||||
33: CP775
|
||||
34: CP855
|
||||
35: CP861
|
||||
36: CP862
|
||||
37: CP864
|
||||
38: CP869
|
||||
39: ISO_8859-2
|
||||
40: ISO_8859-15
|
||||
41: CP1098
|
||||
45: CP1250
|
||||
46: CP1251
|
||||
47: CP1253
|
||||
48: CP1254
|
||||
49: CP1255
|
||||
50: CP1256
|
||||
51: CP1257
|
||||
52: CP1258
|
||||
53: RK1048
|
||||
255: Unknown
|
||||
...
|
18
capabilities-data/data/profile/TM-U220.yml
Normal file
18
capabilities-data/data/profile/TM-U220.yml
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
TM-U220:
|
||||
name: TM-U220
|
||||
vendor: Epson
|
||||
inherits: simple
|
||||
notes: Two-color impact printer with 80mm output
|
||||
features:
|
||||
bitImageRaster: false
|
||||
bitImageColumn: true
|
||||
highDensity: false
|
||||
colors:
|
||||
0: black
|
||||
1: alternate
|
||||
media:
|
||||
width:
|
||||
mm: 80
|
||||
pixels: Unknown
|
||||
...
|
7
capabilities-data/data/profile/TSP600.yml
Normal file
7
capabilities-data/data/profile/TSP600.yml
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
TSP600:
|
||||
name: TSP600 Series
|
||||
vendor: Star Micronics
|
||||
inherits: SP2000
|
||||
notes: Star TSP600 thermal printer series with ESC/POS emulation enabled
|
||||
...
|
7
capabilities-data/data/profile/TUP500.yml
Normal file
7
capabilities-data/data/profile/TUP500.yml
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
TUP500:
|
||||
name: TUP500 Series
|
||||
vendor: Star Micronics
|
||||
inherits: SP2000
|
||||
notes: Star TUP500 thermal printer series with ESC/POS emulation enabled
|
||||
...
|
47
capabilities-data/data/profile/ZJ-5870.yml
Normal file
47
capabilities-data/data/profile/ZJ-5870.yml
Normal file
@ -0,0 +1,47 @@
|
||||
---
|
||||
ZJ-5870:
|
||||
name: ZJ-5870 Thermal Receipt Printer
|
||||
vendor: ZiJiang
|
||||
notes: >
|
||||
ESC/POS Profile for ZiJiang ZJ-5870 Thermal Receipt Printer,
|
||||
which may be branded AGPtEK or Esky,
|
||||
and identifies itself as a POS-58 Thermal Printer on selftest.
|
||||
This profile is suitable for alphanumberic character mode,
|
||||
but is untested on Chinese character mode.
|
||||
(Change modes by holding down feed button during power-on
|
||||
until the mode LED turns off, then release immediately.)
|
||||
features:
|
||||
barcodeA: false
|
||||
barcodeB: false
|
||||
bitImageRaster: true
|
||||
bitImageColumn: true
|
||||
graphics: false
|
||||
starCommands: false
|
||||
qrCode: false
|
||||
pdf417Code: false
|
||||
highDensity: false
|
||||
pulseStandard: true
|
||||
pulseBel: false
|
||||
paperFullCut: false
|
||||
paperPartCut: false
|
||||
colors:
|
||||
0: black
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 32
|
||||
media:
|
||||
width:
|
||||
mm: 48
|
||||
pixels: 384
|
||||
codePages:
|
||||
0: CP437
|
||||
1: CP932
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
16: CP1252
|
||||
17: CP866
|
||||
18: CP852
|
||||
...
|
120
capabilities-data/data/profile/default.yml
Normal file
120
capabilities-data/data/profile/default.yml
Normal file
@ -0,0 +1,120 @@
|
||||
---
|
||||
default:
|
||||
name: Default
|
||||
vendor: Generic
|
||||
notes: >
|
||||
Default ESC/POS profile, suitable for standards-compliant or
|
||||
Epson-branded printers. This profile allows the use of standard
|
||||
ESC/POS features, and can encode a variety of code pages.
|
||||
features:
|
||||
barcodeA: true
|
||||
barcodeB: true
|
||||
bitImageRaster: true
|
||||
bitImageColumn: true
|
||||
graphics: true
|
||||
starCommands: false
|
||||
qrCode: true
|
||||
pdf417Code: true
|
||||
highDensity: true
|
||||
pulseStandard: true
|
||||
pulseBel: false
|
||||
paperFullCut: true
|
||||
paperPartCut: true
|
||||
colors:
|
||||
0: black
|
||||
fonts:
|
||||
0:
|
||||
name: Font A
|
||||
columns: 42
|
||||
1:
|
||||
name: Font B
|
||||
columns: 56
|
||||
media:
|
||||
width:
|
||||
mm: Unknown
|
||||
pixels: Unknown
|
||||
codePages:
|
||||
0: CP437
|
||||
1: CP932
|
||||
2: CP850
|
||||
3: CP860
|
||||
4: CP863
|
||||
5: CP865
|
||||
# Hiragana
|
||||
6: Unknown
|
||||
# One-pass printing Kanji characters
|
||||
7: Unknown
|
||||
# One-pass printing Kanji characters
|
||||
8: Unknown
|
||||
11: CP851
|
||||
12: CP853
|
||||
13: CP857
|
||||
14: CP737
|
||||
15: ISO_8859-7
|
||||
16: CP1252
|
||||
17: CP866
|
||||
18: CP852
|
||||
19: CP858
|
||||
# Thai Character Code 42
|
||||
20: Unknown
|
||||
# Thai Character Code 11
|
||||
21: CP874
|
||||
# Thai Character Code 13
|
||||
22: Unknown
|
||||
# Thai Character Code 14
|
||||
23: Unknown
|
||||
# Thai Character Code 16
|
||||
24: Unknown
|
||||
# Thai Character Code 17
|
||||
25: Unknown
|
||||
# Thai Character Code 18
|
||||
26: Unknown
|
||||
30: TCVN-3-1
|
||||
31: TCVN-3-2
|
||||
32: CP720
|
||||
33: CP775
|
||||
34: CP855
|
||||
35: CP861
|
||||
36: CP862
|
||||
37: CP864
|
||||
38: CP869
|
||||
39: ISO_8859-2
|
||||
40: ISO_8859-15
|
||||
41: CP1098
|
||||
42: CP774
|
||||
43: CP772
|
||||
44: CP1125
|
||||
45: CP1250
|
||||
46: CP1251
|
||||
47: CP1253
|
||||
48: CP1254
|
||||
49: CP1255
|
||||
50: CP1256
|
||||
51: CP1257
|
||||
52: CP1258
|
||||
53: RK1048
|
||||
# Devanagari
|
||||
66: Unknown
|
||||
# Bengali
|
||||
67: Unknown
|
||||
# Tamil
|
||||
68: Unknown
|
||||
# Telugu
|
||||
69: Unknown
|
||||
# Assamese
|
||||
70: Unknown
|
||||
# Oriya
|
||||
71: Unknown
|
||||
# Kannada
|
||||
72: Unknown
|
||||
# Malayalam
|
||||
73: Unknown
|
||||
# Gujarati
|
||||
74: Unknown
|
||||
# Punjabi
|
||||
75: Unknown
|
||||
# Marathi
|
||||
82: Unknown
|
||||
254: Unknown
|
||||
255: Unknown
|
||||
...
|
21
capabilities-data/data/profile/simple.yml
Normal file
21
capabilities-data/data/profile/simple.yml
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
simple:
|
||||
name: Simple
|
||||
vendor: Generic
|
||||
inherits: default
|
||||
notes: >
|
||||
A profile for use in printers with unknown or poor compatibility. This
|
||||
profile indicates that a small number of features are supported, so that
|
||||
commands are not sent a printer that is unlikely to understand them.
|
||||
features:
|
||||
barcodeA: false
|
||||
barcodeB: false
|
||||
bitImageColumn: false
|
||||
graphics: false
|
||||
qrCode: false
|
||||
pdf417Code: false
|
||||
paperFullCut: false
|
||||
paperPartCut: false
|
||||
codePages:
|
||||
0: CP437
|
||||
...
|
103
capabilities-data/doc/add-your-printer.md
Normal file
103
capabilities-data/doc/add-your-printer.md
Normal file
@ -0,0 +1,103 @@
|
||||
# How to get your printer included in the database
|
||||
|
||||
We aim to list every ESC/POS printer in this database, and we need your help!
|
||||
|
||||
## Why is it good to have my printer listed?
|
||||
|
||||
Data from this project is used by multiple open source projects to improve
|
||||
printer compatibility.
|
||||
|
||||
If your printer is listed with accurate information, then drivers which use
|
||||
this data will know how to safely use features like images, QR codes,
|
||||
barcodes, and non-ASCII text encoding.
|
||||
|
||||
## Is my printer in the database already?
|
||||
|
||||
Check [the browsable version of this database](https://mike42.me/escpos-printer-db/).
|
||||
|
||||
Some printers are sold under several names, so look out for similar model numbers as well.
|
||||
|
||||
## Is my printer eligible to be listed?
|
||||
|
||||
Any ESC/POS devices can be listed, including:
|
||||
|
||||
- ESC/POS thermal and impact printers
|
||||
- Printers with ESC/POS emulation mode
|
||||
- Non-printing ESC/POS devices like customer displays
|
||||
|
||||
If your printer does not understand ESC/POS, then we wont list it.
|
||||
|
||||
## Information to gather
|
||||
|
||||
The minimum info that you need to make a printer profile is:
|
||||
|
||||
- Vendor name and model number.
|
||||
- Link to a vendor programming guide that lists supported features if it is available online.
|
||||
- Paper width (58mm and 80mm are common).
|
||||
|
||||
If you don't have documentation, then you need to print some things to try to find out what your printer supports:
|
||||
|
||||
- Test page output listing supported character encodings.
|
||||
- Output of some ESC/POS commands to see what works.
|
||||
|
||||
For testing out features, you can send [escpos-php test files](https://github.com/mike42/escpos-php/tree/master/test/integration/resources/output)
|
||||
to your printer and note the output for each file.
|
||||
|
||||
Once you have this, file a [new issue](https://github.com/receipt-print-hq/escpos-printer-db/issues/new) with the information.
|
||||
|
||||
## How to write a printer profile
|
||||
|
||||
Profiles are written in `yml` syntax. Start by selecting a base profile, then override a
|
||||
small number of options.
|
||||
|
||||
- The `default` profile is a good base for printers with a lot of features
|
||||
- The `simple` profile is a good base for printers which have very few features
|
||||
|
||||
This example is the `TM-U220` profile, which is based on the `simple` profile but notes
|
||||
that the printer supports two colors, and does not support high-density images.
|
||||
|
||||
```yaml
|
||||
---
|
||||
TM-U220:
|
||||
name: TM-U220
|
||||
vendor: Epson
|
||||
inherits: simple
|
||||
notes: Two-color impact printer with 80mm output
|
||||
features:
|
||||
bitImageRaster: false
|
||||
bitImageColumn: true
|
||||
highDensity: false
|
||||
colors:
|
||||
0: black
|
||||
1: alternate
|
||||
media:
|
||||
width:
|
||||
mm: 80
|
||||
pixels: Unknown
|
||||
...
|
||||
```
|
||||
|
||||
As another example, the `SP2000` profile is based on the `default` profile,
|
||||
but lists the different code pages used by Star printers.
|
||||
|
||||
```yaml
|
||||
---
|
||||
SP2000:
|
||||
name: SP2000 Series
|
||||
vendor: Star Micronics
|
||||
inherits: default
|
||||
notes: Star SP2000 impact printer series with ESC/POS emulation enabled
|
||||
features:
|
||||
starCommands: true
|
||||
codePages:
|
||||
# "Normal"
|
||||
0: CP437
|
||||
1: CP437
|
||||
2: CP932
|
||||
3: CP437
|
||||
# .. code page list continues ...
|
||||
```
|
||||
|
||||
Once you have written a profile for your own printer, send us a pull request with the
|
||||
new file. The profile will need to pass `yamllint`, an automated build, and be reviewed
|
||||
by a project contributor.
|
148
capabilities-data/scripts/collate.py
Executable file
148
capabilities-data/scripts/collate.py
Executable file
@ -0,0 +1,148 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Quick build script to assemble profiles.
|
||||
|
||||
Lots of room to improve validation or documentation at this step, threw in
|
||||
some assertions to avoid passing malformed profiles to a driver.
|
||||
"""
|
||||
|
||||
import json
|
||||
import collections
|
||||
import os
|
||||
|
||||
import pyaml
|
||||
import yaml
|
||||
|
||||
def load_encodings():
|
||||
"""
|
||||
Load in all the encodings from the encoding definition file
|
||||
"""
|
||||
encoding_fn = os.path.dirname(__file__) + "/../data/encoding.yml"
|
||||
encodings_raw = yaml.safe_load(open(encoding_fn).read())
|
||||
return encodings_raw
|
||||
|
||||
def load_profiles():
|
||||
"""
|
||||
Load in all the profiles from the profile folder (file-per-profile)
|
||||
"""
|
||||
profiles_raw = {}
|
||||
profiles_dir = os.path.dirname(__file__) + "/../data/profile/"
|
||||
for profile_fn in os.listdir(profiles_dir):
|
||||
if not profile_fn[-3:] == 'yml':
|
||||
continue
|
||||
|
||||
profile_dict = yaml.safe_load(open(profiles_dir + profile_fn).read())
|
||||
# One item per file
|
||||
assert len(profile_dict) == 1, "{}: expected one entry, got {}" \
|
||||
.format(profile_fn, len(profile_dict))
|
||||
# Item must match filename
|
||||
profile_name, profile_val = profile_dict.popitem()
|
||||
assert profile_name + ".yml" == profile_fn, \
|
||||
"{}: Expected to find profile named the same as file, got {}" \
|
||||
.format(profile_fn, profile_name)
|
||||
profiles_raw[profile_name] = profile_val
|
||||
return profiles_raw
|
||||
|
||||
def substitute_profile(profile_name, profiles_raw, encodings_raw):
|
||||
"""
|
||||
Substitute in the values for 'inherited' profiles so that values are simply
|
||||
repeated in the output.
|
||||
"""
|
||||
# Build stack of inheritance
|
||||
current_key = profile_name
|
||||
keys = [current_key]
|
||||
values = [profiles_raw[current_key]]
|
||||
while 'inherits' in profiles_raw[current_key]:
|
||||
assert not profiles_raw[current_key]['inherits'] in keys, \
|
||||
"Profile {}: Circular reference calculating inheritance" \
|
||||
.format(profile_name)
|
||||
current_key = profiles_raw[current_key]['inherits']
|
||||
keys.append(current_key)
|
||||
values.append(profiles_raw[current_key])
|
||||
|
||||
# Check for some required keys in this profile which should not be left to
|
||||
# inheritance to set
|
||||
required_keys = ['vendor', 'notes', 'name']
|
||||
for i in required_keys:
|
||||
assert i in profiles_raw[profile_name].keys(), \
|
||||
"{}: Profile key '{}' must be defined in every profile" \
|
||||
.format(profile_name, i)
|
||||
|
||||
# Merge base profiles and sub-profiles by overriding entire keys, except for
|
||||
# 'features' list, which are merged item-by-item.
|
||||
profile = dict((k, v) for d in values[::-1] for k, v in d.items())
|
||||
profile['features'] = dict((k, v) for d in values[::-1] for k, v in \
|
||||
(d['features'].items() if 'features' in d else []))
|
||||
if 'inherits' in profile:
|
||||
del profile['inherits']
|
||||
|
||||
# Sanity check for required keys exist
|
||||
required_keys = ['vendor', 'features', 'media', 'notes', 'fonts', 'colors', \
|
||||
'codePages', 'name']
|
||||
for i in required_keys:
|
||||
assert i in profile.keys(), \
|
||||
"{}: Profile key '{}' must be defined or inherited" \
|
||||
.format(profile_name, i)
|
||||
|
||||
# Sanity check for required features exist
|
||||
required_features = ['starCommands', 'highDensity', 'barcodeB', \
|
||||
'bitImageColumn', 'graphics', 'qrCode', 'bitImageRaster']
|
||||
for i in required_features:
|
||||
assert i in profile['features'].keys(), \
|
||||
"{}: Profile feature '{}' must be defined or inherited" \
|
||||
.format(profile_name, i)
|
||||
|
||||
# Reference check over encodings
|
||||
for i in profile['codePages'].values():
|
||||
assert i in encodings_raw.keys(), \
|
||||
"{}: Profile claims to support fictional encoding '{}'" \
|
||||
.format(profile_name, i)
|
||||
|
||||
return profile
|
||||
|
||||
def filter_encodings(encodings_raw, profiles_subsituted):
|
||||
"""
|
||||
Filter down encodings list, adding unset names and excluding unused
|
||||
encodings.
|
||||
"""
|
||||
# Give everything a name if not set
|
||||
for name, encoding in encodings_raw.items():
|
||||
if not 'name' in encoding:
|
||||
encoding['name'] = name
|
||||
|
||||
# Strip out un-used code pages
|
||||
unused = encodings_raw.keys()
|
||||
for profile in profiles_subsituted.values():
|
||||
used = profile['codePages'].values()
|
||||
unused = [x for x in unused if x not in used]
|
||||
return {k: v for k, v in encodings_raw.items() if k not in unused}
|
||||
|
||||
def run_collation():
|
||||
"""
|
||||
Execute collation of all YAML files into single-file databases, in two
|
||||
formats.
|
||||
"""
|
||||
encodings_raw = load_encodings()
|
||||
profiles_raw = load_profiles()
|
||||
profiles_substituted = {}
|
||||
for profile_name in profiles_raw.keys():
|
||||
profiles_substituted[profile_name] = \
|
||||
substitute_profile(profile_name, profiles_raw, encodings_raw)
|
||||
encodings_filtered = filter_encodings(encodings_raw, profiles_substituted)
|
||||
|
||||
capabilities = {'profiles': profiles_substituted, 'encodings': encodings_filtered}
|
||||
|
||||
# Dump output in format that is safe for human consumption in reasonable quantities
|
||||
json_capabilities = json.dumps(capabilities, sort_keys=True, indent=4, separators=(',', ': '))
|
||||
with open(os.path.dirname(__file__) + "/../dist/capabilities.json", "wb+") as json_f:
|
||||
json_f.write(json_capabilities.encode('utf-8'))
|
||||
|
||||
# Convert it to YAML, preserving the same order
|
||||
ordered_dict = json.loads(json_capabilities, object_pairs_hook=collections.OrderedDict)
|
||||
yml_capabilities = pyaml.dumps(ordered_dict, string_val_style='"', explicit_start=True)
|
||||
with open(os.path.dirname(__file__) + "/../dist/capabilities.yml", "wb+") as yml_f:
|
||||
yml_f.write(yml_capabilities)
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_collation()
|
Loading…
x
Reference in New Issue
Block a user