since i couldn’t find one, i made a standard farsi/persian keybaord layout for haiku.
just paste the code in a text file and compile it using:
keymap -c < filename
it’ll make a filename.out
binary file that you can open using the keymap app in the preferences menu. (note that you need to have a persian or arabic font installed or the characters wont be visible)
#!/bin/keymap -s
#
# Raw key numbering for 102-key keyboard...
# [sys] [brk]
# 0x7e 0x7f
# [esc] [ f1] [ f2] [ f3] [ f4] [ f5] [ f6] [ f7] [ f8] [ f9] [f10] [f11] [f12] [prn] [scr] [pau]
# 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10 K E Y P A D K E Y S
#
# [ ` ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 0 ] [ - ] [ = ] [ bck ] [ins] [hme] [pup] [num] [ / ] [ * ] [ - ]
# 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f 0x20 0x21 0x22 0x23 0x24 0x25
#
# [ tab ] [ q ] [ w ] [ e ] [ r ] [ t ] [ y ] [ u ] [ i ] [ o ] [ p ] [ [ ] [ ] ] [ \ ] [del] [end] [pdn] [ 7 ] [ 8 ] [ 9 ] [ + ]
# 0x26 0x27 0x28 0x29 0x2a 0x2b 0x2c 0x2d 0x2e 0x2f 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3a
#
# [ caps ] [ a ] [ s ] [ d ] [ f ] [ g ] [ h ] [ j ] [ k ] [ l ] [ ; ] [ ' ] [ enter ] [ 4 ] [ 5 ] [ 6 ]
# 0x3b 0x3c 0x3d 0x3e 0x3f 0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49 0x4a
#
# [shft] [ \ ] [ z ] [ x ] [ c ] [ v ] [ b ] [ n ] [ m ] [ , ] [ . ] [ / ] [ shift ] [ up] [ 1 ] [ 2 ] [ 3 ] [ent]
# 0x4b 0x69 0x4c 0x4d 0x4e 0x4f 0x50 0x51 0x52 0x53 0x54 0x55 0x56 0x57 0x58 0x59 0x5a 0x5b
#
# [ ctrl ] [ cmd ] [ space ] [ cmd ] [ ctrl ] [lft] [dwn] [rgt] [ 0 ] [ . ]
# 0x5c 0x5d 0x5e 0x5f 0x60 0x61 0x62 0x63 0x64 0x65
#
# NOTE: Key 0x69 does not exist on US keyboards
# NOTE: On a Microsoft Natural Keyboard:
# left option = 0x66
# right option = 0x67
# menu key = 0x68
# NOTE: On an Apple Extended Keyboard:
# left option = 0x66
# right option = 0x67
# keypad '=' = 0x6a
# power key = 0x6b
Version = 3
CapsLock = 0x3b
ScrollLock = 0x0f
NumLock = 0x22
LShift = 0x4b
RShift = 0x56
LCommand = 0x5c
RCommand = 0x60
LControl = 0x5d
RControl = 0x00
LOption = 0x66
ROption = 0x5f
Menu = 0x68
#
# Lock settings
# To set NumLock, do the following:
# LockSettings = NumLock
#
# To set everything, do the following:
# LockSettings = CapsLock NumLock ScrollLock
#
LockSettings = NumLock
# Legend:
# n = Normal
# s = Shift
# c = Control
# C = CapsLock
# o = Option
# Key n s c o os C Cs Co Cos
Key 0x00 = '' '' '' '' '' '' '' '' ''
Key 0x01 = 0x1b 0x1b 0x1b 0x1b 0x1b 0x1b 0x1b 0x1b 0x1b
Key 0x02 = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x03 = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x04 = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x05 = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x06 = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x07 = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x08 = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x09 = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x0a = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x0b = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x0c = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x0d = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x0e = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x0f = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x10 = 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10 0x10
Key 0x11 = 0xc3b7 0xc397 '' ' ' '' 0xc3b7 0xc397 ' ' ''
Key 0x12 = '1' 0x21 '' ' ' '' '1' 0x21 ' ' ''
Key 0x13 = '2' 0x40 0x00 ' ' '' '2' 0x40 ' ' ''
Key 0x14 = '3' 0x23 '' ' ' '' '3' 0x23 ' ' ''
Key 0x15 = '4' 0x24 '' ' ' '' '4' 0x24 ' ' ''
Key 0x16 = '5' 0x25 '' ' ' '' '5' 0x25 ' ' ''
Key 0x17 = '6' 0x5e 0x1e ' ' '' '6' 0x5e ' ' ''
Key 0x18 = '7' 0x26 '' ' ' '' '7' 0x26 ' ' ''
Key 0x19 = '8' 0x2a '' ' ' '' '8' 0x2a ' ' ''
Key 0x1a = '9' 0x29 '' ' ' '' '9' 0x29 ' ' ''
Key 0x1b = '0' 0x28 '' ' ' '' '0' 0x28 ' ' ''
Key 0x1c = '-' 0x5f 0x1f ' ' '' '-' 0x5f ' ' ''
Key 0x1d = '=' 0x2b '' ' ' '' '=' 0x2b ' ' ''
Key 0x1e = 0x08 0x08 0x7f 0x08 0x08 0x08 0x08 0x08 0x08
Key 0x1f = 0x05 0x05 0x05 0x05 0x05 0x05 0x05 0x05 0x05
Key 0x20 = 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01
Key 0x21 = 0x0b 0x0b 0x0b 0x0b 0x0b 0x0b 0x0b 0x0b 0x0b
Key 0x22 = '' '' '' '' '' '' '' '' ''
Key 0x23 = '/' '/' '/' '/' '/' '/' '/' '/' '/'
Key 0x24 = '*' '*' '*' '*' '*' '*' '*' '*' '*'
Key 0x25 = '-' '-' '-' '-' '-' '-' '-' '-' '-'
Key 0x26 = 0x09 0x09 0x09 0x09 0x09 0x09 0x09 0x09 0x09
Key 0x27 = 0xd8b6 0xd98b 0x11 ' ' '' 0xd8b6 0xd98b ' ' ''
Key 0x28 = 0xd8b5 0xd98c 0x17 ' ' '' 0xd8b5 0xd98c ' ' ''
Key 0x29 = 0xd8ab 0xd98d 0x05 ' ' '' 0xd8ab 0xd98d ' ' ''
Key 0x2a = 0xd982 0xefb7bc 0x12 ' ' '' 0xd982 0xefb7bc ' ' ''
Key 0x2b = 0xd981 0xd88c 0x14 ' ' '' 0xd981 0xd88c ' ' ''
Key 0x2c = 0xd8ba 0xd89b 0x19 ' ' '' 0xd8ba 0xd89b ' ' ''
Key 0x2d = 0xd8b9 0x2c 0x15 ' ' '' 0xd8b9 0x2c ' ' ''
Key 0x2e = 0xd987 0x5d 0x09 ' ' '' 0xd987 0x5d ' ' ''
Key 0x2f = 0xd8ae 0x5b 0x0f ' ' '' 0xd8ae 0x5b ' ' ''
Key 0x30 = 0xd8ad 0x5c 0x10 ' ' '' 0xd8ad 0x5c ' ' ''
Key 0x31 = 0xd8ac 0x7d 0x1b ' ' '' 0xd8ac 0x7d ' ' ''
Key 0x32 = 0xda86 0x7b 0x1d ' ' '' 0xda86 0x7b ' ' ''
Key 0x33 = 0xd9be 0x7c 0x1c ' ' '' 0xd9be 0x7c ' ' ''
Key 0x34 = 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f
Key 0x35 = 0x04 0x04 0x04 0x04 0x04 0x04 0x04 0x04 0x04
Key 0x36 = 0x0c 0x0c 0x0c 0x0c 0x0c 0x0c 0x0c 0x0c 0x0c
Key 0x37 = 0x01 '7' 0x01 0x01 '7' 0x01 '7' 0x01 '7'
Key 0x38 = 0x1e '8' 0x1e 0x1e '8' 0x1e '8' 0x1e '8'
Key 0x39 = 0x0b '9' 0x0b 0x0b '9' 0x0b '9' 0x0b '9'
Key 0x3a = '+' '+' '+' '+' '+' '+' '+' '+' '+'
Key 0x3b = '' '' '' '' '' '' '' '' ''
Key 0x3c = 0xd8b4 0xd98e 0x01 ' ' '' 0xd8b4 0xd98e ' ' ''
Key 0x3d = 0xd8b3 0xd98f 0x13 ' ' '' 0xd8b3 0xd98f ' ' ''
Key 0x3e = 0xdb8c 0xd990 0x04 ' ' '' 0xdb8c 0xd990 ' ' ''
Key 0x3f = 0xd8a8 0xd991 0x06 ' ' '' 0xd8a8 0xd991 ' ' ''
Key 0x40 = 0xd984 0xdb80 0x07 ' ' '' 0xd984 0xdb80 ' ' ''
Key 0x41 = 0xd8a7 0xd8a2 0x08 ' ' '' 0xd8a7 0xd8a2 ' ' ''
Key 0x42 = 0xd8aa 0xd980 0x0a ' ' '' 0xd8aa 0xd980 ' ' ''
Key 0x43 = 0xd986 0xc2ab 0x0b ' ' '' 0xd986 0xc2ab ' ' ''
Key 0x44 = 0xd985 0xc2bb 0x0c ' ' '' 0xd985 0xc2bb ' ' ''
Key 0x45 = 0xdaa9 0x3a '' ' ' '' 0xdaa9 0x3a ' ' ''
Key 0x46 = 0xdaaf 0x22 '' ' ' '' 0xdaaf 0x22 ' ' ''
Key 0x47 = 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a
Key 0x48 = 0x1c '4' 0x1c 0x1c '4' 0x1c '4' 0x1c '4'
Key 0x49 = '' '5' '' '' '5' '' '5' '' '5'
Key 0x4a = 0x1d '6' 0x1d 0x1d '6' 0x1d '6' 0x1d '6'
Key 0x4b = '' '' '' '' '' '' '' '' ''
Key 0x4c = 0xd8b8 0xd8a9 0x1a ' ' '' 0xd8b8 0xd8a9 ' ' ''
Key 0x4d = 0xd8b7 0xd98a 0x18 ' ' '' 0xd8b7 0xd98a ' ' ''
Key 0x4e = 0xd8b2 0xda98 0x03 ' ' '' 0xd8b2 0xda98 ' ' ''
Key 0x4f = 0xd8b1 0xd8a4 0x16 ' ' '' 0xd8b1 0xd8a4 ' ' ''
Key 0x50 = 0xd8b0 0xd8a5 0x02 ' ' '' 0xd8b0 0xd8a5 ' ' ''
Key 0x51 = 0xd8af 0xd8a3 0x0e ' ' '' 0xd8af 0xd8a3 ' ' ''
Key 0x52 = 0xd8a6 0xd8a1 0x0d ' ' '' 0xd8a6 0xd8a1 ' ' ''
Key 0x53 = 0xd988 0x3c '' ' ' '' 0xd988 0x3c ' ' ''
Key 0x54 = '.' 0x3e '' ' ' '' '.' 0x3e ' ' ''
Key 0x55 = '/' 0xd89f '' ' ' '' '/' 0xd89f ' ' ''
Key 0x56 = '' '' '' '' '' '' '' '' ''
Key 0x57 = 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e 0x1e
Key 0x58 = 0x04 '1' 0x04 0x04 '1' 0x04 '1' 0x04 '1'
Key 0x59 = 0x1f '2' 0x1f 0x1f '2' 0x1f '2' 0x1f '2'
Key 0x5a = 0x0c '3' 0x0c 0x0c '3' 0x0c '3' 0x0c '3'
Key 0x5b = 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a
Key 0x5c = '' '' '' '' '' '' '' '' ''
Key 0x5d = '' '' '' '' '' '' '' '' ''
Key 0x5e = ' ' ' ' 0x00 ' ' ' ' ' ' ' ' ' ' ' '
Key 0x5f = '' '' '' '' '' '' '' '' ''
Key 0x60 = '' '' '' '' '' '' '' '' ''
Key 0x61 = 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c
Key 0x62 = 0x1f 0x1f 0x1f 0x1f 0x1f 0x1f 0x1f 0x1f 0x1f
Key 0x63 = 0x1d 0x1d 0x1d 0x1d 0x1d 0x1d 0x1d 0x1d 0x1d
Key 0x64 = 0x05 '0' 0x05 0x05 '0' 0x05 '0' 0x05 '0'
Key 0x65 = 0x7f '.' 0x7f 0x7f '.' 0x7f '.' 0x7f '.'
Key 0x66 = '' '' '' '' '' '' '' '' ''
Key 0x67 = '' '' '' '' '' '' '' '' ''
Key 0x68 = '' '' '' '' '' '' '' '' ''
Key 0x69 = '' '|' 0x1c ' ' '' 0xd98d '|' ' ' ''
Key 0x6a = '' '' '' '' '' '' '' '' ''
Key 0x6b = '' '' '' '' '' '' '' '' ''
Key 0x6c = '' '' '' '' '' '' '' '' ''
Key 0x6d = '' '' '' '' '' '' '' '' ''
Key 0x6e = '' '' '' '' '' '' '' '' ''
Key 0x6f = '' '' '' '' '' '' '' '' ''
Key 0x70 = '' '' '' '' '' '' '' '' ''
Key 0x71 = '' '' '' '' '' '' '' '' ''
Key 0x72 = '' '' '' '' '' '' '' '' ''
Key 0x73 = '' '' '' '' '' '' '' '' ''
Key 0x74 = '' '' '' '' '' '' '' '' ''
Key 0x75 = '' '' '' '' '' '' '' '' ''
Key 0x76 = '' '' '' '' '' '' '' '' ''
Key 0x77 = '' '' '' '' '' '' '' '' ''
Key 0x78 = '' '' '' '' '' '' '' '' ''
Key 0x79 = '' '' '' '' '' '' '' '' ''
Key 0x7a = '' '' '' '' '' '' '' '' ''
Key 0x7b = '' '' '' '' '' '' '' '' ''
Key 0x7c = '' '' '' '' '' '' '' '' ''
Key 0x7d = '' '' '' '' '' '' '' '' ''
Key 0x7e = '' '' '' '' '' '' '' '' ''
Key 0x7f = '' '' '' '' '' '' '' '' ''
Acute ' ' = 0xc2b4
Acute 'A' = 0xc381
Acute 'E' = 0xc389
Acute 'I' = 0xc38d
Acute 'O' = 0xc393
Acute 'U' = 0xc39a
Acute 'Y' = 0xc39d
Acute 'a' = 0xc3a1
Acute 'e' = 0xc3a9
Acute 'i' = 0xc3ad
Acute 'o' = 0xc3b3
Acute 'u' = 0xc3ba
Acute 'y' = 0xc3bd
AcuteTab = Normal Shift Control Option Option-Shift CapsLock CapsLock-Shift CapsLock-Option CapsLock-Option-Shift
Grave ' ' = '`'
Grave 'A' = 0xc380
Grave 'E' = 0xc388
Grave 'I' = 0xc38c
Grave 'O' = 0xc392
Grave 'U' = 0xc399
Grave 'a' = 0xc3a0
Grave 'e' = 0xc3a8
Grave 'i' = 0xc3ac
Grave 'o' = 0xc3b2
Grave 'u' = 0xc3b9
GraveTab =
Circumflex ' ' = '^'
Circumflex 'A' = 0xc382
Circumflex 'E' = 0xc38a
Circumflex 'I' = 0xc38e
Circumflex 'O' = 0xc394
Circumflex 'U' = 0xc39b
Circumflex 'a' = 0xc3a2
Circumflex 'e' = 0xc3aa
Circumflex 'i' = 0xc3ae
Circumflex 'o' = 0xc3b4
Circumflex 'u' = 0xc3bb
CircumflexTab =
Diaeresis ' ' = '"'
Diaeresis 'A' = 0xc384
Diaeresis 'E' = 0xc38b
Diaeresis 'I' = 0xc38f
Diaeresis 'O' = 0xc396
Diaeresis 'U' = 0xc39c
Diaeresis 'Y' = 0xc5b8
Diaeresis 'a' = 0xc3a4
Diaeresis 'e' = 0xc3ab
Diaeresis 'i' = 0xc3af
Diaeresis 'o' = 0xc3b6
Diaeresis 'u' = 0xc3bc
Diaeresis 'y' = 0xc3bf
DiaeresisTab =
Tilde ' ' = '~'
Tilde 'A' = 0xc383
Tilde 'O' = 0xc395
Tilde 'N' = 0xc391
Tilde 'a' = 0xc3a3
Tilde 'o' = 0xc3b5
Tilde 'n' = 0xc3b1
TildeTab =