[FIX] hw_escops, point_of_sale: backporting fixes from the pos-restaurant branch
[odoo/odoo.git] / addons / hw_escpos / escpos / constants.py
1 # -*- coding: utf-8 -*-
2
3 """ ESC/POS Commands (Constants) """
4
5 # Feed control sequences
6 CTL_LF    = '\x0a'             # Print and line feed
7 CTL_FF    = '\x0c'             # Form feed
8 CTL_CR    = '\x0d'             # Carriage return
9 CTL_HT    = '\x09'             # Horizontal tab
10 CTL_VT    = '\x0b'             # Vertical tab
11 # Printer hardware
12 HW_INIT   = '\x1b\x40'         # Clear data in buffer and reset modes
13 HW_SELECT = '\x1b\x3d\x01'     # Printer select
14 HW_RESET  = '\x1b\x3f\x0a\x00' # Reset printer hardware
15 # Cash Drawer
16 CD_KICK_2 = '\x1b\x70\x00'     # Sends a pulse to pin 2 [] 
17 CD_KICK_5 = '\x1b\x70\x01'     # Sends a pulse to pin 5 [] 
18 # Paper
19 PAPER_FULL_CUT  = '\x1d\x56\x00' # Full cut paper
20 PAPER_PART_CUT  = '\x1d\x56\x01' # Partial cut paper
21 # Text format   
22 TXT_NORMAL      = '\x1b\x21\x00' # Normal text
23 TXT_2HEIGHT     = '\x1b\x21\x10' # Double height text
24 TXT_2WIDTH      = '\x1b\x21\x20' # Double width text
25 TXT_DOUBLE      = '\x1b\x21\x30' # Double height & Width
26 TXT_UNDERL_OFF  = '\x1b\x2d\x00' # Underline font OFF
27 TXT_UNDERL_ON   = '\x1b\x2d\x01' # Underline font 1-dot ON
28 TXT_UNDERL2_ON  = '\x1b\x2d\x02' # Underline font 2-dot ON
29 TXT_BOLD_OFF    = '\x1b\x45\x00' # Bold font OFF
30 TXT_BOLD_ON     = '\x1b\x45\x01' # Bold font ON
31 TXT_FONT_A      = '\x1b\x4d\x00' # Font type A
32 TXT_FONT_B      = '\x1b\x4d\x01' # Font type B
33 TXT_ALIGN_LT    = '\x1b\x61\x00' # Left justification
34 TXT_ALIGN_CT    = '\x1b\x61\x01' # Centering
35 TXT_ALIGN_RT    = '\x1b\x61\x02' # Right justification
36 TXT_COLOR_BLACK = '\x1b\x72\x00' # Default Color
37 TXT_COLOR_RED   = '\x1b\x72\x01' # Alternative Color ( Usually Red )
38
39 # Text Encoding
40
41 TXT_ENC_PC437   = '\x1b\x74\x00' # PC437 USA
42 TXT_ENC_KATAKANA= '\x1b\x74\x01' # KATAKANA (JAPAN)
43 TXT_ENC_PC850   = '\x1b\x74\x02' # PC850 Multilingual
44 TXT_ENC_PC860   = '\x1b\x74\x03' # PC860 Portuguese
45 TXT_ENC_PC863   = '\x1b\x74\x04' # PC863 Canadian-French
46 TXT_ENC_PC865   = '\x1b\x74\x05' # PC865 Nordic
47 TXT_ENC_KANJI6  = '\x1b\x74\x06' # One-pass Kanji, Hiragana
48 TXT_ENC_KANJI7  = '\x1b\x74\x07' # One-pass Kanji 
49 TXT_ENC_KANJI8  = '\x1b\x74\x08' # One-pass Kanji
50 TXT_ENC_PC851   = '\x1b\x74\x0b' # PC851 Greek
51 TXT_ENC_PC853   = '\x1b\x74\x0c' # PC853 Turkish
52 TXT_ENC_PC857   = '\x1b\x74\x0d' # PC857 Turkish 
53 TXT_ENC_PC737   = '\x1b\x74\x0e' # PC737 Greek
54 TXT_ENC_8859_7  = '\x1b\x74\x0f' # ISO8859-7 Greek
55 TXT_ENC_WPC1252 = '\x1b\x74\x10' # WPC1252
56 TXT_ENC_PC866   = '\x1b\x74\x11' # PC866 Cyrillic #2
57 TXT_ENC_PC852   = '\x1b\x74\x12' # PC852 Latin2
58 TXT_ENC_PC858   = '\x1b\x74\x13' # PC858 Euro
59 TXT_ENC_KU42    = '\x1b\x74\x14' # KU42 Thai
60 TXT_ENC_TIS11   = '\x1b\x74\x15' # TIS11 Thai
61 TXT_ENC_TIS18   = '\x1b\x74\x1a' # TIS18 Thai
62 TXT_ENC_TCVN3   = '\x1b\x74\x1e' # TCVN3 Vietnamese
63 TXT_ENC_TCVN3B  = '\x1b\x74\x1f' # TCVN3 Vietnamese
64 TXT_ENC_PC720   = '\x1b\x74\x20' # PC720 Arabic
65 TXT_ENC_WPC775  = '\x1b\x74\x21' # WPC775 Baltic Rim
66 TXT_ENC_PC855   = '\x1b\x74\x22' # PC855 Cyrillic 
67 TXT_ENC_PC861   = '\x1b\x74\x23' # PC861 Icelandic
68 TXT_ENC_PC862   = '\x1b\x74\x24' # PC862 Hebrew
69 TXT_ENC_PC864   = '\x1b\x74\x25' # PC864 Arabic
70 TXT_ENC_PC869   = '\x1b\x74\x26' # PC869 Greek
71 TXT_ENC_8859_2  = '\x1b\x74\x27' # ISO8859-2 Latin2
72 TXT_ENC_8859_9  = '\x1b\x74\x28' # ISO8859-2 Latin9
73 TXT_ENC_PC1098  = '\x1b\x74\x29' # PC1098 Farsi
74 TXT_ENC_PC1118  = '\x1b\x74\x2a' # PC1118 Lithuanian
75 TXT_ENC_PC1119  = '\x1b\x74\x2b' # PC1119 Lithuanian
76 TXT_ENC_PC1125  = '\x1b\x74\x2c' # PC1125 Ukrainian
77 TXT_ENC_WPC1250 = '\x1b\x74\x2d' # WPC1250 Latin2
78 TXT_ENC_WPC1251 = '\x1b\x74\x2e' # WPC1251 Cyrillic
79 TXT_ENC_WPC1253 = '\x1b\x74\x2f' # WPC1253 Greek
80 TXT_ENC_WPC1254 = '\x1b\x74\x30' # WPC1254 Turkish
81 TXT_ENC_WPC1255 = '\x1b\x74\x31' # WPC1255 Hebrew
82 TXT_ENC_WPC1256 = '\x1b\x74\x32' # WPC1256 Arabic
83 TXT_ENC_WPC1257 = '\x1b\x74\x33' # WPC1257 Baltic Rim
84 TXT_ENC_WPC1258 = '\x1b\x74\x34' # WPC1258 Vietnamese
85 TXT_ENC_KZ1048  = '\x1b\x74\x35' # KZ-1048 Kazakhstan
86
87 TXT_ENC_KATAKANA_MAP = {
88   # Maps UTF-8 Katakana symbols to KATAKANA Page Codes
89
90   # Half-Width Katakanas
91   '\xef\xbd\xa1':'\xa1',  # 。
92   '\xef\xbd\xa2':'\xa2',  # 「
93   '\xef\xbd\xa3':'\xa3',  # 」
94   '\xef\xbd\xa4':'\xa4',  # 、
95   '\xef\xbd\xa5':'\xa5',  # ・
96
97   '\xef\xbd\xa6':'\xa6',  # ヲ
98   '\xef\xbd\xa7':'\xa7',  # ァ
99   '\xef\xbd\xa8':'\xa8',  # ィ
100   '\xef\xbd\xa9':'\xa9',  # ゥ
101   '\xef\xbd\xaa':'\xaa',  # ェ
102   '\xef\xbd\xab':'\xab',  # ォ
103   '\xef\xbd\xac':'\xac',  # ャ
104   '\xef\xbd\xad':'\xad',  # ュ
105   '\xef\xbd\xae':'\xae',  # ョ
106   '\xef\xbd\xaf':'\xaf',  # ッ
107   '\xef\xbd\xb0':'\xb0',  # ー
108   '\xef\xbd\xb1':'\xb1',  # ア
109   '\xef\xbd\xb2':'\xb2',  # イ
110   '\xef\xbd\xb3':'\xb3',  # ウ
111   '\xef\xbd\xb4':'\xb4',  # エ
112   '\xef\xbd\xb5':'\xb5',  # オ
113   '\xef\xbd\xb6':'\xb6',  # カ
114   '\xef\xbd\xb7':'\xb7',  # キ
115   '\xef\xbd\xb8':'\xb8',  # ク
116   '\xef\xbd\xb9':'\xb9',  # ケ
117   '\xef\xbd\xba':'\xba',  # コ
118   '\xef\xbd\xbb':'\xbb',  # サ
119   '\xef\xbd\xbc':'\xbc',  # シ
120   '\xef\xbd\xbd':'\xbd',  # ス
121   '\xef\xbd\xbe':'\xbe',  # セ
122   '\xef\xbd\xbf':'\xbf',  # ソ
123   '\xef\xbe\x80':'\xc0',  # タ
124   '\xef\xbe\x81':'\xc1',  # チ
125   '\xef\xbe\x82':'\xc2',  # ツ
126   '\xef\xbe\x83':'\xc3',  # テ
127   '\xef\xbe\x84':'\xc4',  # ト
128   '\xef\xbe\x85':'\xc5',  # ナ
129   '\xef\xbe\x86':'\xc6',  # ニ
130   '\xef\xbe\x87':'\xc7',  # ヌ
131   '\xef\xbe\x88':'\xc8',  # ネ
132   '\xef\xbe\x89':'\xc9',  # ノ
133   '\xef\xbe\x8a':'\xca',  # ハ
134   '\xef\xbe\x8b':'\xcb',  # ヒ
135   '\xef\xbe\x8c':'\xcc',  # フ
136   '\xef\xbe\x8d':'\xcd',  # ヘ
137   '\xef\xbe\x8e':'\xce',  # ホ
138   '\xef\xbe\x8f':'\xcf',  # マ
139   '\xef\xbe\x90':'\xd0',  # ミ
140   '\xef\xbe\x91':'\xd1',  # ム
141   '\xef\xbe\x92':'\xd2',  # メ
142   '\xef\xbe\x93':'\xd3',  # モ
143   '\xef\xbe\x94':'\xd4',  # ヤ
144   '\xef\xbe\x95':'\xd5',  # ユ
145   '\xef\xbe\x96':'\xd6',  # ヨ
146   '\xef\xbe\x97':'\xd7',  # ラ
147   '\xef\xbe\x98':'\xd8',  # リ
148   '\xef\xbe\x99':'\xd9',  # ル
149   '\xef\xbe\x9a':'\xda',  # レ
150   '\xef\xbe\x9b':'\xdb',  # ロ
151   '\xef\xbe\x9c':'\xdc',  # ワ
152   '\xef\xbe\x9d':'\xdd',  # ン
153
154   '\xef\xbe\x9e':'\xde',  # ゙
155   '\xef\xbe\x9f':'\xdf',  # ゚
156 }
157
158 # Barcod format
159 BARCODE_TXT_OFF = '\x1d\x48\x00' # HRI barcode chars OFF
160 BARCODE_TXT_ABV = '\x1d\x48\x01' # HRI barcode chars above
161 BARCODE_TXT_BLW = '\x1d\x48\x02' # HRI barcode chars below
162 BARCODE_TXT_BTH = '\x1d\x48\x03' # HRI barcode chars both above and below
163 BARCODE_FONT_A  = '\x1d\x66\x00' # Font type A for HRI barcode chars
164 BARCODE_FONT_B  = '\x1d\x66\x01' # Font type B for HRI barcode chars
165 BARCODE_HEIGHT  = '\x1d\x68\x64' # Barcode Height [1-255]
166 BARCODE_WIDTH   = '\x1d\x77\x03' # Barcode Width  [2-6]
167 BARCODE_UPC_A   = '\x1d\x6b\x00' # Barcode type UPC-A
168 BARCODE_UPC_E   = '\x1d\x6b\x01' # Barcode type UPC-E
169 BARCODE_EAN13   = '\x1d\x6b\x02' # Barcode type EAN13
170 BARCODE_EAN8    = '\x1d\x6b\x03' # Barcode type EAN8
171 BARCODE_CODE39  = '\x1d\x6b\x04' # Barcode type CODE39
172 BARCODE_ITF     = '\x1d\x6b\x05' # Barcode type ITF
173 BARCODE_NW7     = '\x1d\x6b\x06' # Barcode type NW7
174 # Image format  
175 S_RASTER_N      = '\x1d\x76\x30\x00' # Set raster image normal size
176 S_RASTER_2W     = '\x1d\x76\x30\x01' # Set raster image double width
177 S_RASTER_2H     = '\x1d\x76\x30\x02' # Set raster image double height
178 S_RASTER_Q      = '\x1d\x76\x30\x03' # Set raster image quadruple