Compare commits

...

10 Commits

Author SHA1 Message Date
topicchi
496b49e8cb 2026-04-30 11:32:29 +00:00
topicchi
4ba54d135d 2026-04-30 10:07:55 +00:00
topicchi
c65ca12664 2026-04-26 18:11:18 +00:00
topicchi
32ac966a44 2026-04-26 13:29:05 +00:00
topicchi
005d66394e 2026-04-26 13:00:05 +00:00
topicchi
c3de739e9a 2026-04-26 12:59:21 +00:00
topicchi
d2636e6d25 2026-04-26 12:57:49 +00:00
topicchi
ef805b494a 2026-04-15 15:40:36 +00:00
topicchi
6c80c7f4f5 2026-03-26 12:55:54 +00:00
topicchi
e84ee01c90 2026-03-25 09:05:07 +00:00
79 changed files with 531924 additions and 30294 deletions

View File

@@ -0,0 +1,164 @@
# MicroPython SSD1306 OLED driver, I2C and SPI interfaces
from micropython import const
import framebuf
# register definitions
SET_CONTRAST = const(0x81)
SET_ENTIRE_ON = const(0xA4)
SET_NORM_INV = const(0xA6)
SET_DISP = const(0xAE)
SET_MEM_ADDR = const(0x20)
SET_COL_ADDR = const(0x21)
SET_PAGE_ADDR = const(0x22)
SET_DISP_START_LINE = const(0x40)
SET_SEG_REMAP = const(0xA0)
SET_MUX_RATIO = const(0xA8)
SET_IREF_SELECT = const(0xAD)
SET_COM_OUT_DIR = const(0xC0)
SET_DISP_OFFSET = const(0xD3)
SET_COM_PIN_CFG = const(0xDA)
SET_DISP_CLK_DIV = const(0xD5)
SET_PRECHARGE = const(0xD9)
SET_VCOM_DESEL = const(0xDB)
SET_CHARGE_PUMP = const(0x8D)
# Subclassing FrameBuffer provides support for graphics primitives
# http://docs.micropython.org/en/latest/pyboard/library/framebuf.html
class SSD1306(framebuf.FrameBuffer):
def __init__(self, width, height, external_vcc):
self.width = width
self.height = height
self.external_vcc = external_vcc
self.pages = self.height // 8
self.buffer = bytearray(self.pages * self.width)
super().__init__(self.buffer, self.width, self.height, framebuf.MONO_VLSB)
self.init_display()
def init_display(self):
for cmd in (
SET_DISP, # display off
# address setting
SET_MEM_ADDR,
0x00, # horizontal
# resolution and layout
SET_DISP_START_LINE, # start at line 0
SET_SEG_REMAP | 0x01, # column addr 127 mapped to SEG0
SET_MUX_RATIO,
self.height - 1,
SET_COM_OUT_DIR | 0x08, # scan from COM[N] to COM0
SET_DISP_OFFSET,
0x00,
SET_COM_PIN_CFG,
0x02 if self.width > 2 * self.height else 0x12,
# timing and driving scheme
SET_DISP_CLK_DIV,
0x80,
SET_PRECHARGE,
0x22 if self.external_vcc else 0xF1,
SET_VCOM_DESEL,
0x30, # 0.83*Vcc
# display
SET_CONTRAST,
0xFF, # maximum
SET_ENTIRE_ON, # output follows RAM contents
SET_NORM_INV, # not inverted
SET_IREF_SELECT,
0x30, # enable internal IREF during display on
# charge pump
SET_CHARGE_PUMP,
0x10 if self.external_vcc else 0x14,
SET_DISP | 0x01, # display on
): # on
self.write_cmd(cmd)
self.fill(0)
self.show()
def poweroff(self):
self.write_cmd(SET_DISP)
def poweron(self):
self.write_cmd(SET_DISP | 0x01)
def contrast(self, contrast):
self.write_cmd(SET_CONTRAST)
self.write_cmd(contrast)
def invert(self, invert):
self.write_cmd(SET_NORM_INV | (invert & 1))
def rotate(self, rotate):
self.write_cmd(SET_COM_OUT_DIR | ((rotate & 1) << 3))
self.write_cmd(SET_SEG_REMAP | (rotate & 1))
def show(self):
x0 = 0
x1 = self.width - 1
if self.width != 128:
# narrow displays use centred columns
col_offset = (128 - self.width) // 2
x0 += col_offset
x1 += col_offset
self.write_cmd(SET_COL_ADDR)
self.write_cmd(x0)
self.write_cmd(x1)
self.write_cmd(SET_PAGE_ADDR)
self.write_cmd(0)
self.write_cmd(self.pages - 1)
self.write_data(self.buffer)
class SSD1306_I2C(SSD1306):
def __init__(self, width, height, i2c, addr=0x3C, external_vcc=False):
self.i2c = i2c
self.addr = addr
self.temp = bytearray(2)
self.write_list = [b"\x40", None] # Co=0, D/C#=1
super().__init__(width, height, external_vcc)
def write_cmd(self, cmd):
self.temp[0] = 0x80 # Co=1, D/C#=0
self.temp[1] = cmd
self.i2c.writeto(self.addr, self.temp)
def write_data(self, buf):
self.write_list[1] = buf
self.i2c.writevto(self.addr, self.write_list)
class SSD1306_SPI(SSD1306):
def __init__(self, width, height, spi, dc, res, cs, external_vcc=False):
self.rate = 10 * 1024 * 1024
dc.init(dc.OUT, value=0)
res.init(res.OUT, value=0)
cs.init(cs.OUT, value=1)
self.spi = spi
self.dc = dc
self.res = res
self.cs = cs
import time
self.res(1)
time.sleep_ms(1)
self.res(0)
time.sleep_ms(10)
self.res(1)
super().__init__(width, height, external_vcc)
def write_cmd(self, cmd):
self.spi.init(baudrate=self.rate, polarity=0, phase=0)
self.cs(1)
self.dc(0)
self.cs(0)
self.spi.write(bytearray([cmd]))
self.cs(1)
def write_data(self, buf):
self.spi.init(baudrate=self.rate, polarity=0, phase=0)
self.cs(1)
self.dc(1)
self.cs(0)
self.spi.write(buf)
self.cs(1)

View File

@@ -0,0 +1,9 @@
:020000040000FA
:10000000CF0C0200000C06000604260446040A0C6D
:100010003200A00C3100FF0C30002605460412020D
:100020003300F302110A04002604460512023300CD
:10003000F302180AF0020D0AF1020B0AF202090A91
:100040000605FF0C3300F302230A060426044604C7
:10005000140C3400040003000000F4022A0A070A0A
:021FFE00EF0FE3
:00000001FF

View File

@@ -0,0 +1,249 @@
gpasm-1.4.0 #1107 (Jan 1 2021) 10f200-Scacci 10-19-2025 22:01:49 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 ; ******************************************************************
00002 ; Scacciazanzare with a PIC10F200
00003 ; 2016-08-11 (c) Paolo Iocco
00004 ; ******************************************************************
00005 ;
00006 ; Circuit diagram
00007 ; ---------------
00008 ; +--\/--+
00009 ; LED <----------|1° 6|<--------|50K|---+5V
00010 ; GND ---------->|2 5|<------- +5V
00011 ; BUZ1 <---------|3 4|-------> BUZ2
00012 ; +------+
00013 ;
00014 ; ******************************************************************
00015
00016 INCLUDE "p10f200.inc" ; include le definizioni standard
00001 LIST
00002
00003 ;==========================================================================
00004 ; Build date : Aug 07 2014
00005 ; MPASM PIC10F200 processor include
00006 ;
00007 ; (c) Copyright 1999-2014 Microchip Technology, All rights reserved
00008 ;==========================================================================
00009
00152 LIST
00017 list p=10F200 ; Processoer utilizzato
00018 ;errorlevel -302 ;suppress message "Bank Switch Check"
0FFF 0FEF 00019 __CONFIG _IntRC_OSC & _WDT_ON & _CP_OFF & _MCLRE_OFF
00020
00021 ; - - - - -
00000010 00022 ciclo_l EQU 0x10 ; primo valore RAM (0x10-0x1F)
00000011 00023 ciclo_h EQU 0x11
00000012 00024 periodo EQU 0x12
00000013 00025 dummy EQU 0x13
00000014 00026 dormi EQU 0x14
00027
00028 #define LED GPIO,0
00029 #define BUZ1 GPIO,1
00030 #define BUZ2 GPIO,2
00031
0000 00032 org 0x00
0000 00033 Start:
0000 0CCF 00034 movlw b'11001111' ; PSA + Prescaler 111 (1:128)
0001 0002 00035 option
0002 0C00 00036 movlw b'0000' ; set GPIO full OUT
0003 0006 00037 tris GPIO
00038
0004 0406 00039 bcf LED ; set LED off
0005 0426 00040 bcf BUZ1 ; set BUZ1 off
0006 0446 00041 bcf BUZ2 ; set BUZ2 off
00042
0007 00043 Loop:
gpasm-1.4.0 #1107 (Jan 1 2021) 10f200-Scacci 10-19-2025 22:01:49 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00044 ; ** emette i suoni da ca. 63KHz a 15KHz (ciclo: 1=63,3KHz, 10=15,7KHz)
0007 0C0A 00045 movlw d'10' ; Invia 10 trame di durata diversa
0008 0032 00046 movwf periodo
00047
0009 00048 Trama:
0009 0CA0 00049 movlw d'160' ; 160*256 periodi per frequenza
000A 0031 00050 movwf ciclo_h
00051
000B 00052 Ciclo_High:
000B 0CFF 00053 movlw d'255' ; ciclo interno
000C 0030 00054 movwf ciclo_l
00055
000D 00056 Ciclo_Low:
00057 ; * ************ *
00058 ; * Periodo ON *
00059 ; * ************ *
000D 0526 00060 bsf BUZ1 ; set BUZ1 on
000E 0446 00061 bcf BUZ2 ; set BUZ2 off
000F 0212 00062 movf periodo,w
0010 0033 00063 movwf dummy
0011 00064 OUT_ON:
0011 02F3 00065 decfsz dummy,f
0012 0A11 00066 goto OUT_ON
0013 0004 00067 clrwdt ; clrwdt qui per equilibrare le durate ON ed OFF
00068 ; * ************* *
00069 ; * Periodo OFF *
00070 ; * ************* *
0014 0426 00071 bcf BUZ1 ; set BUZ1 off
0015 0546 00072 bsf BUZ2 ; set BUZ2 on
0016 0212 00073 movf periodo,w
0017 0033 00074 movwf dummy
0018 00075 OUT_OFF:
0018 02F3 00076 decfsz dummy,f
0019 0A18 00077 goto OUT_OFF
00078 ; * NEXT Ciclo Low
001A 02F0 00079 decfsz ciclo_l,f
001B 0A0D 00080 goto Ciclo_Low
00081 ; * NEXT Ciclo High
001C 02F1 00082 decfsz ciclo_h,f
001D 0A0B 00083 goto Ciclo_High
00084 ; * NEXT Trama
001E 02F2 00085 decfsz periodo,f
001F 0A09 00086 goto Trama
00087
00088 ; * ************* *
00089 ; * Lampeggio LED *
00090 ; * ************* *
0020 0506 00091 bsf LED ; set LED on
0021 0CFF 00092 movlw d'255' ; Pausa (ca. xxx ms)
0022 0033 00093 movwf dummy
0023 00094 LED_ON:
0023 02F3 00095 decfsz dummy,f
0024 0A23 00096 goto LED_ON
gpasm-1.4.0 #1107 (Jan 1 2021) 10f200-Scacci 10-19-2025 22:01:49 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00097
00098 ; * ****************** *
00099 ; * Preparazione SLEEP *
00100 ; * ****************** *
0025 0406 00101 bcf LED ; set LED off
0026 0426 00102 bcf BUZ1 ; set BUZ1 off
0027 0446 00103 bcf BUZ2 ; set BUZ2 off
00104 ; * dorme per 20 cicli di watchdog
0028 0C14 00105 movlw d'20'
0029 0034 00106 movwf dormi
002A 00107 Ciclo_Sleep:
002A 0004 00108 clrwdt
002B 0003 00109 sleep
002C 0000 00110 nop
002D 02F4 00111 decfsz dormi,f
002E 0A2A 00112 goto Ciclo_Sleep
00113
00114 ; * Torna al ciclo principale
002F 0A07 00115 goto loop
00116 end
gpasm-1.4.0 #1107 (Jan 1 2021) 10f200-Scacci 10-19-2025 22:01:49 PAGE 4
SYMBOL TABLE
LABEL VALUE
BUZ1 GPIO,1
BUZ2 GPIO,2
C 00000000
CAL0 00000001
CAL1 00000002
CAL2 00000003
CAL3 00000004
CAL4 00000005
CAL5 00000006
CAL6 00000007
Ciclo_High 0000000B
Ciclo_Low 0000000D
Ciclo_Sleep 0000002A
DC 00000001
F 00000001
FOSC4 00000000
FSR 00000004
GP0 00000000
GP1 00000001
GP2 00000002
GP3 00000003
GPIO 00000006
GPWUF 00000007
INDF 00000000
LED GPIO,0
LED_ON 00000023
Loop 00000007
NOT_GPPU 00000006
NOT_GPWU 00000007
NOT_PD 00000003
NOT_TO 00000004
OSCCAL 00000005
OUT_OFF 00000018
OUT_ON 00000011
PCL 00000002
PS0 00000000
PS1 00000001
PS2 00000002
PSA 00000003
STATUS 00000003
Start 00000000
T0CS 00000005
T0SE 00000004
TMR0 00000001
TRISIO0 00000000
TRISIO1 00000001
TRISIO2 00000002
TRISIO3 00000003
Trama 00000009
W 00000000
Z 00000002
_CONFIG 00000FFF
_CP_OFF 00000FFF
gpasm-1.4.0 #1107 (Jan 1 2021) 10f200-Scacci 10-19-2025 22:01:49 PAGE 5
SYMBOL TABLE
LABEL VALUE
_CP_ON 00000FF7
_IDLOC0 00000100
_IDLOC1 00000101
_IDLOC2 00000102
_IDLOC3 00000103
_IntRC_OSC 00000FFF
_MCLRE_OFF 00000FEF
_MCLRE_ON 00000FFF
_OSC_IntRC 00000FFF
_WDTE_OFF 00000FFB
_WDTE_ON 00000FFF
_WDT_OFF 00000FFB
_WDT_ON 00000FFF
__10F200 00000001
__CODE_END 000000FF
__CODE_START 00000000
__VECTOR_RESET 00000000
ciclo_h 00000011
ciclo_l 00000010
dormi 00000014
dummy 00000013
periodo 00000012
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX ----------------
0FC0 : ---------------- ---------------- ---------------- ---------------X
All other memory blocks unused.
Program Memory Words Used: 48
Program Memory Words Free: 208
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 0 reported, 0 suppressed

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,90 +1,145 @@
# VICE keyboard mapping file # VICE keyboard mapping file for C64
# Layout: Positional per Commodore 64 USB (QMK) # Ottimizzato per Case Plus/4 con QMK
# Formato: KEYSYM ROW COL SHIFTFLAG # Formato: Keysym Row Col Shift
!LSHIFT 1 2 # File format:
!RSHIFT 6 4 # - comment lines start with '#'
!VSHIFT LSHIFT # - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
#
# Negative row values:
# 'keysym -1 n' joystick #1, direction n
# 'keysym -2 n' joystick #2, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
#
# Positional Mapping, US Layout, C64, GTK
#
# C64 keyboard matrix:
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 2| 5 % | R | D | 6 & | C | F | T | X |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 4| 9 ) | I | J | 0 | M | K | O | N |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
#
# C64 Keyboard layout:
#
# arrow 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0 + - pound clr del f1/f2
# ctrl q w e r t y u i o p @ * ^ restore f3/f4
# r/s SL a s d f g h j k l :[ ;] = return f5/f6
# CBM LS z x c v b n m ,< .> /? RS u/d l/r f7/f8
#
# Riga Superiore (Numeri e Simboli) # --- Riga 0 (Tasti Superiori) ---
1 7 0 8 BackSpace 0 0 0 # INST/DEL (C64: R0, C0)
2 7 3 8 Return 0 1 0 # RETURN (C64: R0, C1)
3 1 0 8 backslash 5 6 0 # Tasto £ (POUND) (C64: R5, C6)
4 1 3 8 F7 0 3 0 # F7 (C64: R0, C3)
5 2 0 8 F1 0 4 0 # F1 (C64: R0, C4)
6 2 3 8 F2 0 4 1 # F2 (Invia Shift+F1 come su C64 reale)
7 3 0 8 F3 0 5 0 # F3 (C64: R0, C5)
8 3 3 8 at 5 3 0 # @ (C64: R5, C3)
9 4 0 8
0 4 3 8
plus 5 0 0
minus 5 3 0
equal 6 5 0
BackSpace 0 0 8
# Seconda Riga (QWERTY...) # --- Riga 1 ---
Tab 7 1 8 3 1 0 0
q 7 6 8 w 1 1 0
w 1 1 8 a 1 2 0
e 1 6 8 4 1 3 0
r 2 1 8 z 1 4 0
t 2 6 8 s 1 5 0
y 3 1 8 e 1 6 0
u 3 6 8 Shift_L 1 7 0
i 4 1 8
o 4 6 8
p 5 1 8
at 4 6 0
asterisk 6 1 0
bracketleft 5 2 1
bracketright 5 5 1
# Terza Riga (ASDF...) # --- Riga 2 ---
Control_L 7 2 8 5 2 0 0
a 1 2 8 r 2 1 0
s 1 5 8 d 2 2 0
d 2 2 8 6 2 3 0
f 2 5 8 c 2 4 0
g 3 2 8 f 2 5 0
h 3 5 8 t 2 6 0
j 4 2 8 x 2 7 0
k 4 5 8
l 5 2 8
colon 5 5 0
semicolon 6 2 0
Return 0 1 8
# Quarta Riga (ZXCV...) # --- Riga 3 ---
Shift_L 1 2 8 7 3 0 0
z 1 4 8 y 3 1 0
x 2 7 8 g 3 2 0
c 2 4 8 8 3 3 0
v 3 7 8 b 3 4 0
b 3 4 8 h 3 5 0
n 4 7 8 u 3 6 0
m 4 4 8 v 3 7 0
comma 5 7 0
period 5 4 0
slash 6 7 0
Shift_R 6 4 8
# Quinta Riga (Barra Spazio e Speciali) # --- Riga 4 ---
Super_L 7 5 8 9 4 0 0
space 7 4 8 i 4 1 0
Escape 7 7 8 j 4 2 0
0 4 3 0
m 4 4 0
k 4 5 0
o 4 6 0
n 4 7 0
# Cursori (Simulazione 4 frecce su 2 tasti C64) # --- Riga 5 (Frecce Plus4 -> Matrice C64) ---
Up 0 0 1 Down 0 7 0 # CRSR Down (C64: R0, C7)
Down 0 0 0 p 5 1 0
Left 0 2 1 l 5 2 0
Right 0 2 0 Up 0 7 1 # CRSR Up (Invia Shift + CRSR Down)
period 5 4 0
colon 5 5 0 # [ : ] (C64: R5, C5)
minus 5 0 0 # [ - ] (C64: R5, C0)
comma 5 7 0
# Tasti Funzione # --- Riga 6 (Frecce Plus4 -> Matrice C64) ---
F1 0 4 0 Left 0 2 1 # CRSR Left (Invia Shift + CRSR Right)
F2 0 4 1 asterisk 6 1 0 # [ * ] (C64: R6, C1)
F3 0 5 0 semicolon 6 2 0 # [ ; ] (C64: R6, C2)
F4 0 5 1 Right 0 2 0 # CRSR Right (C64: R0, C2)
F5 0 6 0 Escape 7 1 0 # ESC (Plus4) -> Tasto FRECCIA SINISTRA (C64: R7, C1)
F6 0 6 1 equal 6 5 0 # [ = ] (C64: R6, C5)
F7 0 3 0 plus 6 6 0 # [ + ] (C64: R6, C6)
F8 0 3 1 slash 6 7 0 # [ / ] (C64: R6, C7)
# --- Riga 7 (Base e Controllo) ---
1 7 0 0
Home 6 3 0 # CLR/HOME (C64: R6, C3)
Tab 7 2 0 # CTRL (C64: R7, C2)
2 7 3 0
space 7 4 0
Control_L 7 5 0 # CBM KEY (C64: R7, C5)
q 7 6 0
Alt_L 7 7 0 # RUN/STOP (C64: R7, C7)

View File

@@ -1,87 +1,145 @@
# VICE keyboard mapping file # VICE keyboard mapping file for Plus/4
# Layout: Positional per Commodore Plus/4 USB (QMK) # Basato sul layer QMK ottimizzato per Plus/4 Case
# Formato: KEYSYM ROW COL SHIFTFLAG # Formato: Keysym Row Col Shift
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
# 64 shift lock
# 256 key is used for an alternative keyboard mapping
#
# When a bigger spaced key is used,
# it uses the upper left most key value.
#
# Positional Mapping, US Layout, Plus/4, GTK
#
# Commodore 16/116/Plus-4 keyboard matrix:
#
# 0 1 2 3 4 5 6 7
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 0 |INST/DEL|RETURN |POUND |F7/HELP |F4/F1 |F5/F2 |F6/F3 |@ |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 1 |3 # |W |A |4 $ |Z |S |E | SHIFTs |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 2 |5 % |R |D |6 & |C |F |T |X |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 3 |7 ' |Y |G |8 ( |B |H |U |V |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 4 |9 ) |I |J |0 ^ |M |K |O |N |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 5 |DOWN |P |L |UP |. > |: [ |- |, < |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 6 |LEFT |* |; ] |RIGHT |ESC |= <- pi |+ |/ ? |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 7 |1 ! |CLR/HOME| CTRLs |2 " |SPACE |CBM |Q |RUN/STOP|
# +--------+--------+--------+--------+--------+--------+--------+--------+
#
# Plus4 keyboard layout:
#
# F1/4 F2/5 F3/6 Help/F7
#
# ESC 1! 2" 3# 4$ 5% 6& 7' 8( 9) 0^ + - =/pi clr del
# CTRL q w e r t y u i o p @ pound * ctrl
# r/s SL a s d f g h j k l :[ ;] return
# CBM LS z x c v b n m ,< .> /? RS up
# space left right
#
!LSHIFT 1 7 # --- Riga 0 (Tasti Superiori / Speciali) ---
!RSHIFT 6 4 BackSpace 0 0 0 # Tasto INST/DEL
!VSHIFT LSHIFT Return 0 1 0 # Tasto RETURN
backslash 0 2 0 # Mappato su £ (POUND) nel Plus/4
F7 0 3 0 # Tasto F4 fisico (F7 con shift)
F1 0 4 0
F2 0 5 0
F3 0 6 0
at 0 7 0 # Tasto @ (dedicato)
# Fila Superiore (Numeri e simboli) # --- Riga 1 ---
1 7 0 8 3 1 0 0
2 7 3 8 w 1 1 0
3 1 0 8 a 1 2 0
4 1 3 8 4 1 3 0
5 2 0 8 z 1 4 0
6 2 3 8 s 1 5 0
7 3 0 8 e 1 6 0
8 3 3 8 Shift_L 1 7 0 # SHIFT
9 4 0 8
0 4 3 8
plus 5 0 0
minus 5 3 0
equal 6 5 0
BackSpace 0 0 8
# Seconda Fila (QWERTY...) # --- Riga 2 ---
Tab 7 1 8 5 2 0 0
q 7 6 8 r 2 1 0
w 1 1 8 d 2 2 0
e 1 6 8 6 2 3 0
r 2 1 8 c 2 4 0
t 2 6 8 f 2 5 0
y 3 1 8 t 2 6 0
u 3 6 8 x 2 7 0
i 4 1 8
o 4 6 8
p 5 1 8
at 0 7 0
bracketleft 6 1 0
bracketright 6 6 0
# Terza Fila (ASDF...) # --- Riga 3 ---
Control_L 7 2 8 7 3 0 0
a 1 2 8 y 3 1 0
s 1 5 8 g 3 2 0
d 2 2 8 8 3 3 0
f 2 5 8 b 3 4 0
g 3 2 8 h 3 5 0
h 3 5 8 u 3 6 0
j 4 2 8 v 3 7 0
k 4 5 8
l 5 2 8
colon 5 5 0
semicolon 6 2 0
Return 0 1 8
# Quarta Fila (ZXCV...) # --- Riga 4 ---
Shift_L 1 7 8 9 4 0 0
z 1 4 8 i 4 1 0
x 2 7 8 j 4 2 0
c 2 4 8 0 4 3 0
v 3 7 8 m 4 4 0
b 3 4 8 k 4 5 0
n 4 7 8 o 4 6 0
m 4 4 8 n 4 7 0
comma 5 7 0
period 5 4 0
slash 6 7 0
Shift_R 6 4 8
# Quinta Fila (Spazio e tasti speciali) # --- Riga 5 (Frecce e Punteggiatura) ---
Super_L 7 5 8 Down 5 0 0
space 7 4 8 p 5 1 0
Escape 7 7 8 l 5 2 0
Up 5 3 0
period 5 4 0
colon 5 5 0
minus 5 6 0
comma 5 7 0
# Cursori (Frecce) # --- Riga 6 (Frecce e Simboli) ---
Up 6 6 8 Left 6 0 0
Down 0 3 8 asterisk 6 1 0
Left 7 1 8 semicolon 6 2 0
Right 0 2 8 Right 6 3 0
Escape 6 4 0
equal 6 5 0
plus 6 6 0
slash 6 7 0
# Tasti Funzione # --- Riga 7 (Base e Controllo) ---
F1 0 4 8 1 7 0 0
F2 0 5 8 Home 7 1 0 # Tasto CLR/HOME
F3 0 6 8 Tab 7 2 0 # Tasto CTRL
F5 0 4 1 2 7 3 0
F6 0 5 1 space 7 4 0
F7 0 6 1 Control_L 7 5 0 # Tasto COMMODORE (CBM)
q 7 6 0
Alt_L 7 7 0 # Mappato su RUN/STOP (Posizione fisica Alt)

View File

@@ -0,0 +1,102 @@
{
"keyboard_name": "cbm2pc",
"manufacturer": "Pennuto",
"processor": "RP2040",
"bootloader": "rp2040",
"url": "",
"maintainer": "Pennuto",
"features": {
"bootmagic": true
},
"bootmagic": {
"matrix": [0, 1]
},
"usb": {
"vid": "0xFEED",
"pid": "0x0004",
"device_version": "0.0.1"
},
"matrix_pins": {
"cols": ["GP9", "GP8", "GP7", "GP6", "GP5", "GP4", "GP3", "GP2"],
"rows": ["GP0", "GP1", "GP15", "GP14", "GP13", "GP12", "GP11", "GP10"]
},
"diode_direction": "COL2ROW",
"layouts": {
"LAYOUT": {
"layout": [
{"label": "INST/DEL", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "RETURN", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "CRSR RIGHT", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "CRSR DOWN", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "F1/F4", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "F2/F5", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "F3/F6", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "@", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "3", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "W", "matrix": [1, 1], "x": 1, "y": 1},
{"label": "A", "matrix": [1, 2], "x": 2, "y": 1},
{"label": "4", "matrix": [1, 3], "x": 3, "y": 1},
{"label": "Z", "matrix": [1, 4], "x": 4, "y": 1},
{"label": "S", "matrix": [1, 5], "x": 5, "y": 1},
{"label": "E", "matrix": [1, 6], "x": 6, "y": 1},
{"label": "LSHIFT", "matrix": [1, 7], "x": 7, "y": 1},
{"label": "5", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "R", "matrix": [2, 1], "x": 1, "y": 2},
{"label": "D", "matrix": [2, 2], "x": 2, "y": 2},
{"label": "6", "matrix": [2, 3], "x": 3, "y": 2},
{"label": "C", "matrix": [2, 4], "x": 4, "y": 2},
{"label": "F", "matrix": [2, 5], "x": 5, "y": 2},
{"label": "T", "matrix": [2, 6], "x": 6, "y": 2},
{"label": "X", "matrix": [2, 7], "x": 7, "y": 2},
{"label": "7", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "Y", "matrix": [3, 1], "x": 1, "y": 3},
{"label": "G", "matrix": [3, 2], "x": 2, "y": 3},
{"label": "8", "matrix": [3, 3], "x": 3, "y": 3},
{"label": "B", "matrix": [3, 4], "x": 4, "y": 3},
{"label": "H", "matrix": [3, 5], "x": 5, "y": 3},
{"label": "U", "matrix": [3, 6], "x": 6, "y": 3},
{"label": "V", "matrix": [3, 7], "x": 7, "y": 3},
{"label": "9", "matrix": [4, 0], "x": 0, "y": 4},
{"label": "I", "matrix": [4, 1], "x": 1, "y": 4},
{"label": "J", "matrix": [4, 2], "x": 2, "y": 4},
{"label": "0", "matrix": [4, 3], "x": 3, "y": 4},
{"label": "M", "matrix": [4, 4], "x": 4, "y": 4},
{"label": "K", "matrix": [4, 5], "x": 5, "y": 4},
{"label": "O", "matrix": [4, 6], "x": 6, "y": 4},
{"label": "N", "matrix": [4, 7], "x": 7, "y": 4},
{"label": "PLUS", "matrix": [5, 0], "x": 0, "y": 5},
{"label": "P", "matrix": [5, 1], "x": 1, "y": 5},
{"label": "L", "matrix": [5, 2], "x": 2, "y": 5},
{"label": "MINUS", "matrix": [5, 3], "x": 3, "y": 5},
{"label": "DOT", "matrix": [5, 4], "x": 4, "y": 5},
{"label": "COLON", "matrix": [5, 5], "x": 5, "y": 5},
{"label": "BRACKET L", "matrix": [5, 6], "x": 6, "y": 5},
{"label": "COMMA", "matrix": [5, 7], "x": 7, "y": 5},
{"label": "POUND", "matrix": [6, 0], "x": 0, "y": 6},
{"label": "BRACKET R", "matrix": [6, 1], "x": 1, "y": 6},
{"label": "SEMICOLON", "matrix": [6, 2], "x": 2, "y": 6},
{"label": "HOME", "matrix": [6, 3], "x": 3, "y": 6},
{"label": "RSHIFT", "matrix": [6, 4], "x": 4, "y": 6},
{"label": "EQUAL", "matrix": [6, 5], "x": 5, "y": 6},
{"label": "UP-ARROW", "matrix": [6, 6], "x": 6, "y": 6},
{"label": "SLASH", "matrix": [6, 7], "x": 7, "y": 6},
{"label": "1", "matrix": [7, 0], "x": 0, "y": 7},
{"label": "LEFT-ARROW", "matrix": [7, 1], "x": 1, "y": 7},
{"label": "CTRL", "matrix": [7, 2], "x": 2, "y": 7},
{"label": "2", "matrix": [7, 3], "x": 3, "y": 7},
{"label": "SPACE", "matrix": [7, 4], "x": 4, "y": 7},
{"label": "COMMODORE", "matrix": [7, 5], "x": 5, "y": 7},
{"label": "Q", "matrix": [7, 6], "x": 6, "y": 7},
{"label": "RUN/STOP", "matrix": [7, 7], "x": 7, "y": 7}
]
}
}
}

View File

@@ -0,0 +1,125 @@
/* *************************************************************** *
* Tastiera QMK on Commodore Plus/4 HW for BMC and other emulators *
* --------------------------------------------------------------- *
* (C)13.04.2026 - Paolo Iocco *
* *************************************************************** */
#include QMK_KEYBOARD_H
#define L_GREEN GP27
#define L_RED GP28
#define PC 0 /* PC Compatible Mode */
#define CKEY 1 /* PC Commodore Key (Control)*/
#define SHIFT 2 /* PC shift mode */
#define C64 3 /* Commodore mode */
#define CSHIFT 4 /* Commodore-Shift mode */
#define CBM 15 /* Commodore Key pressed in Emulation mode. Allows to go back to PC Mode pressing C= & Control. */
/* **************** *
* Inizializzazione *
* **************** */
void keyboard_post_init_user(void) {
// Imposta GP28/27/26 come output
palSetPadMode(PAL_PORT(L_GREEN), PAL_PAD(L_GREEN), PAL_MODE_OUTPUT_PUSHPULL);
palSetPadMode(PAL_PORT(L_RED), PAL_PAD(L_RED), PAL_MODE_OUTPUT_PUSHPULL);
// Stato iniziale: Accendi GREEN, Spegni RED
palSetLine(L_GREEN);
palClearLine(L_RED);
}
/* ************************************ *
* Gestione LED in base al Layer attivo *
* ************************************ */
layer_state_t layer_state_set_user(layer_state_t state) {
// Controlla quale layer è attivo
switch (get_highest_layer(state)) {
case C64:
case CSHIFT:
palClearLine(L_GREEN); // Spegni LED GREEN
palSetLine(L_RED); // Accendi LED RED
break;
case CKEY:
case CBM:
palSetLine(L_GREEN); // Accendi LED GREEN)
palSetLine(L_RED); // Accendi LED RED
break;
default:
palSetLine(L_GREEN); // Accendi LED GREEN)
palClearLine(L_RED); // Spegni LED RED
break;
}
return state;
}
/* ******* *
* Layouts *
* ******* */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[PC] = LAYOUT(
KC_1, KC_HOME, KC_TAB, KC_LALT, KC_SPC, LT(CKEY,KC_LCTL), KC_Q, KC_2,
KC_3, KC_W, KC_A, MO(SHIFT), KC_Z, KC_S, KC_E, KC_4,
KC_5, KC_R, KC_D, KC_X, KC_C, KC_F, KC_T, KC_6,
KC_7, KC_Y, KC_G, KC_V, KC_B, KC_H, KC_U, KC_8,
KC_9, KC_I, KC_J, KC_N, KC_M, KC_K, KC_O, KC_0,
KC_DOWN, KC_P, KC_L, KC_COMM, KC_DOT, KC_COLON, KC_MINS, KC_UP,
KC_LEFT, KC_ASTR, KC_SCLN, KC_SLSH, KC_ESC, KC_EQL, KC_PLUS, KC_RGHT,
KC_BSPC, KC_ENT, KC_BSLS, S(KC_2), KC_F1, KC_F2, KC_F3, KC_F4
),
[CKEY] = LAYOUT(
_______, _______, TO(C64), LCTL(KC_F8), _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, LCTL(KC_D), LCTL(KC_X), LCTL(KC_C), _______, _______, _______,
_______, _______, _______, LCTL(KC_V), _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
MS_DOWN, _______, _______, _______, MS_BTN1, S(KC_LBRC), KC_TILD, MS_UP,
MS_LEFT, _______, S(KC_RBRC), MS_BTN2, _______, _______, _______, MS_RGHT,
_______, _______, _______, _______, KC_F9, KC_F10, KC_F11, KC_F12
),
[SHIFT] = LAYOUT(
KC_EXLM, KC_TILD, _______, _______, S(KC_SPC), _______, S(KC_Q), KC_DQUO,
KC_HASH, S(KC_W), S(KC_A), _______, S(KC_Z), S(KC_S), S(KC_E), KC_DLR,
KC_PERC, S(KC_R), S(KC_D), S(KC_X), S(KC_C), S(KC_F), S(KC_T), KC_AMPR,
KC_QUOT, S(KC_Y), S(KC_G), S(KC_V), S(KC_B), S(KC_H), S(KC_U), KC_LPRN,
KC_RPRN, S(KC_I), S(KC_J), S(KC_N), S(KC_M), S(KC_K), S(KC_O), KC_CIRC,
_______, S(KC_P), S(KC_L), KC_LABK, KC_RABK, KC_LBRC, S(KC_MINS), _______,
KC_PIPE, _______, KC_RBRC, KC_QUES, _______, _______, _______, _______,
S(KC_DEL), S(KC_ENT), _______, _______, KC_F5, KC_F6, KC_F7, KC_F8
),
[C64] = LAYOUT(
KC_1, KC_HOME, KC_TAB, KC_LALT, KC_SPC, LM(CBM,MOD_LCTL), KC_Q, KC_2,
KC_3, KC_W, KC_A, LM(CSHIFT,MOD_LSFT), KC_Z, KC_S, KC_E, KC_4,
KC_5, KC_R, KC_D, KC_X, KC_C, KC_F, KC_T, KC_6,
KC_7, KC_Y, KC_G, KC_V, KC_B, KC_H, KC_U, KC_8,
KC_9, KC_I, KC_J, KC_N, KC_M, KC_K, KC_O, KC_0,
KC_DOWN, KC_P, KC_L, KC_COMM, KC_DOT, KC_COLON, KC_MINS, KC_UP,
KC_LEFT, KC_ASTR, KC_SCLN, KC_SLSH, KC_ESC, KC_EQL, KC_PLUS, KC_RGHT,
KC_BSPC, KC_ENT, KC_BSLS, KC_AT, KC_F1, KC_F2, KC_F3, KC_F7
),
[CSHIFT] = LAYOUT(
KC_EXLM, S(KC_HOME), _______, _______, S(KC_SPC), _______, S(KC_Q), KC_DQUO,
KC_HASH, S(KC_W), S(KC_A), _______, S(KC_Z), S(KC_S), S(KC_E), KC_DLR,
KC_PERC, S(KC_R), S(KC_D), S(KC_X), S(KC_C), S(KC_F), S(KC_T), KC_AMPR,
KC_QUOT, S(KC_Y), S(KC_G), S(KC_V), S(KC_B), S(KC_H), S(KC_U), KC_LPRN,
KC_RPRN, S(KC_I), S(KC_J), S(KC_N), S(KC_M), S(KC_K), S(KC_O), KC_CIRC,
_______, S(KC_P), S(KC_L), KC_LABK, KC_RABK, KC_LBRC, _______, _______,
KC_PIPE, _______, KC_RBRC, KC_QUES, _______, _______, _______, _______,
S(KC_DEL), S(KC_ENT), _______, _______, KC_F5, KC_F6, KC_F7, KC_F8
),
[CBM] = LAYOUT(
_______, _______, TO(PC), _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, KC_PGUP, _______, _______, KC_F12
)
};

View File

@@ -0,0 +1,27 @@
# cbm2pc
![cbm2pc](imgur.com image replace me!)
*A short description of the keyboard/project*
* Keyboard Maintainer: [Pennuto](https://github.com/Pennuto)
* Hardware Supported: *The PCBs, controllers supported*
* Hardware Availability: *Links to where you can find this hardware*
Make example for this keyboard (after setting up your build environment):
make cbm2pc:default
Flashing example for this keyboard:
make cbm2pc:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -0,0 +1 @@
MOUSEKEY_ENABLE = yes

Binary file not shown.

View File

@@ -0,0 +1,327 @@
# GTK3-VICE keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE GTK3 v3.4
# Mapped for positional compatibility to C-128 Keyboards.
# Based on C64 Positional Layout.
# Keys not present in C-64 (like NumPad Keys, ESC, TAB) are accessed with Right Shift Key.
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!LCTRL row col' left control keyboard row/column
# '!VCTRL ctrlkey' virtual control key (LCTRL)
# '!LCBM row col' left CBM keyboard row/column
# '!VCBM cbmkey' virtual CBM key (LCBM)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
# 64 key is shift-lock on emulated machine
# 128 shift modifier required on host
# 256 key is used for an alternative keyboard mapping
# 512 alt-r (alt-gr) modifier required on host
# 1024 ctrl modifier required on host
# 2048 key is combined with cbm for this keysym/scancode
# 4096 key is combined with ctrl for this keysym/scancode
# 8192 key is (left) cbm on emulated machine
# 16384 key is (left) ctrl on emulated machine
#
# Negative row values:
# 'keysym -1 n' joystick #1, direction n
# 'keysym -2 n' joystick #2, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
# 'keysym -5 n' joyport keypad, key n
#
# Joystick direction values:
# 0 Fire
# 1 South/West
# 2 South
# 3 South/East
# 4 West
# 5 East
# 6 North/West
# 7 North
# 8 North/East
#
# Joyport keypad key layout:
# --------------------------
# | 0 | 1 | 2 | 3 | 4 |
# --------------------------
# | 5 | 6 | 7 | 8 | 9 |
# --------------------------
# | 10 | 11 | 12 | 13 | 14 |
# --------------------------
# | 15 | 16 | 17 | 18 | 19 |
# --------------------------
#
# When a bigger spaced key is used,
# it uses the upper left most key value.
# Positional Mapping, US Layout, C128, X11
# C128 Keyboard matrix
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 2| 5 % | R | D | 6 & | C | F | T | X |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 4| 9 ) | I | J | 0 | M | K | O | N |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 8 |HELP | KP 8| KP 5| TAB | KP 2| KP 4| KP 7| KP 1|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 9 | ESC | KP +| KP -| LF |KP CR| KP 6| KP 9| KP 3|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 10| ALT | KP 0| KP .|A.UP |A.DWN|A.LFT|A.RGT|NOSCR|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
!CLEAR
!LSHIFT 1 7
!RSHIFT 6 4
!VSHIFT RSHIFT
# 40/80 column key
F6 -4 0
# CAPS LOCK (ASCII/DIN) key
F10 -4 1
####################
# Restore key mappings
Page_Up -3 0
#####################
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
BackSpace 0 0 8
Return 0 1 8
Right 0 2 8
F1 0 4 8
F3 0 5 8
F5 0 6 8
F7 0 3 8
Down 0 7 8
#####################
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
numbersign 1 0 8
dollar 1 3 8
Shift_L 1 7 2
#####################
# |Bit 2| 5 % | R | D | 6 & | C | F | T | X |
percent 2 0 8
asciicircum 2 3 8
#####################
# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V |
ampersand 3 0 8
asterisk 3 3 8
#####################
# |Bit 4| 9 ) | I | J | 0 | M | K | O | N |
parenleft 4 0 8
parenright 4 3 8
#####################
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
underscore 5 0 8
minus 5 0 8
plus 5 3 8
equal 5 3 8
period 5 4 8
greater 5 4 1
semicolon 5 5 8
colon 5 5 8
braceleft 5 6 8
bracketleft 5 6 8
comma 5 7 8
less 5 7 8
#####################
# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? |
Insert 6 0 8
braceright 6 1 8
bracketright 6 1 8
apostrophe 6 2 8
quotedbl 6 2 8
Home 6 3 8
Shift_R 6 4 4
backslash 6 5 8
bar 6 5 8
Delete 6 6 8
question 6 7 8
slash 6 7 8
#####################
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
exclam 7 0 8
dead_grave 7 1 8 # Arrow_LFT <-
dead_perispomeni 7 1 8 # Arrow_LFT <-
Tab 7 2 8 # Control <-
at 7 3 8
space 7 4 8
Control_L 7 5 8 # CBM Key
Escape 7 7 8 # RUN/STOP <-
#####################
# |Bit 8 |HELP | KP 8| KP 5| TAB | KP 2| KP 4| KP 7| KP 1|
F2 8 0 8
KP_8 8 1 8
KP_5 8 2 8
F11 8 3 8 # TAB <-
KP_2 8 4 8
KP_4 8 5 8
KP_7 8 6 8
KP_1 8 7 8
#####################
# |Bit 9 | ESC | KP +| KP -| LF |KP CR| KP 6| KP 9| KP 3|
KP_Multiply 9 0 8
KP_Add 9 1 8
KP_Subtract 9 2 8
F4 9 3 8
KP_Enter 9 4 8
KP_6 9 5 8
KP_9 9 6 8
KP_3 9 7 8
#####################
# |Bit 10| ALT | KP 0| KP .|A.UP |A.DWN|A.LFT|A.RGT|NOSCR|
F9 10 0 8
KP_0 10 1 8
KP_Decimal 10 2 8
Up 10 3 8
#Down 10 4 8
Left 10 5 8
#Right 10 6 8
KP_Divide 10 7 8
####################
# Dead keys support for those using US-International keyboard layout.
dead_circumflex 2 3 8 # &
dead_acute 6 2 8 # ;
dead_diaeresis 6 2 8 # ]
grave 7 1 8 # Arrow_LFT <-
asciitilde 7 1 8 # Arrow_LFT <-
#####################
# letters and numbers
0 4 3 8
1 7 0 8
2 7 3 8
3 1 0 8
4 1 3 8
5 2 0 8
6 2 3 8
7 3 0 8
8 3 3 8
9 4 0 8
A 1 2 8
B 3 4 8
C 2 4 8
D 2 2 8
E 1 6 8
F 2 5 8
G 3 2 8
H 3 5 8
I 4 1 8
J 4 2 8
K 4 5 8
L 5 2 8
M 4 4 8
N 4 7 8
O 4 6 8
P 5 1 8
Q 7 6 8
R 2 1 8
S 1 5 8
T 2 6 8
U 3 6 8
V 3 7 8
W 1 1 8
X 2 7 8
Y 3 1 8
Z 1 4 8
a 1 2 8
b 3 4 8
c 2 4 8
d 2 2 8
e 1 6 8
f 2 5 8
g 3 2 8
h 3 5 8
i 4 1 8
j 4 2 8
k 4 5 8
l 5 2 8
m 4 4 8
n 4 7 8
o 4 6 8
p 5 1 8
q 7 6 8
r 2 1 8
s 1 5 8
t 2 6 8
u 3 6 8
v 3 7 8
w 1 1 8
x 2 7 8
y 3 1 8
z 1 4 8
##############################################################################

View File

@@ -0,0 +1,330 @@
# GTK3-VICE keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE GTK3 v3.4
# Mapped for positional compatibility to C-128 Keyboards.
# Based on C64 Positional Layout.
# Keys not present in C-64 (like NumPad Keys, ESC, TAB) are accessed with Right Shift Key.
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!LCTRL row col' left control keyboard row/column
# '!VCTRL ctrlkey' virtual control key (LCTRL)
# '!LCBM row col' left CBM keyboard row/column
# '!VCBM cbmkey' virtual CBM key (LCBM)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
# 64 key is shift-lock on emulated machine
# 128 shift modifier required on host
# 256 key is used for an alternative keyboard mapping
# 512 alt-r (alt-gr) modifier required on host
# 1024 ctrl modifier required on host
# 2048 key is combined with cbm for this keysym/scancode
# 4096 key is combined with ctrl for this keysym/scancode
# 8192 key is (left) cbm on emulated machine
# 16384 key is (left) ctrl on emulated machine
#
# Negative row values:
# 'keysym -1 n' joystick #1, direction n
# 'keysym -2 n' joystick #2, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
# 'keysym -5 n' joyport keypad, key n
#
# Joystick direction values:
# 0 Fire
# 1 South/West
# 2 South
# 3 South/East
# 4 West
# 5 East
# 6 North/West
# 7 North
# 8 North/East
#
# Joyport keypad key layout:
# --------------------------
# | 0 | 1 | 2 | 3 | 4 |
# --------------------------
# | 5 | 6 | 7 | 8 | 9 |
# --------------------------
# | 10 | 11 | 12 | 13 | 14 |
# --------------------------
# | 15 | 16 | 17 | 18 | 19 |
# --------------------------
#
# When a bigger spaced key is used,
# it uses the upper left most key value.
# Positional Mapping, US Layout, C128, X11
# C128 Keyboard matrix
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 2| 5 % | R | D | 6 & | C | F | T | X |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 4| 9 ) | I | J | 0 | M | K | O | N |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 8 |HELP | KP 8| KP 5| TAB | KP 2| KP 4| KP 7| KP 1|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 9 | ESC | KP +| KP -| LF |KP CR| KP 6| KP 9| KP 3|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 10| ALT | KP 0| KP .|A.UP |A.DWN|A.LFT|A.RGT|NOSCR|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
!CLEAR
!LSHIFT 1 7
!RSHIFT 6 4
!VSHIFT RSHIFT
!LCTRL 7 2
!VCTRL LCTRL
!LCBM 7 5
!VCBM LCBM
# 40/80 column key
F6 -4 0
# CAPS LOCK (ASCII/DIN) key
F10 -4 1
####################
# Restore key mappings
Page_Up -3 0
#####################
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
BackSpace 0 0 8
Return 0 1 8
Right 0 2 8
F1 0 4 8
F3 0 5 8
F5 0 6 8
F7 0 3 8
Down 0 7 8
#####################
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
numbersign 1 0 8
dollar 1 3 8
Shift_L 1 7 2
#####################
# |Bit 2| 5 % | R | D | 6 & | C | F | T | X |
percent 2 0 8
asciicircum 2 3 8
#####################
# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V |
ampersand 3 0 8
asterisk 3 3 8
#####################
# |Bit 4| 9 ) | I | J | 0 | M | K | O | N |
parenleft 4 0 8
parenright 4 3 8
#####################
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
underscore 5 0 8
minus 5 0 8
plus 5 3 8
equal 5 3 8
period 5 4 8
greater 5 4 1
semicolon 5 5 8
colon 5 5 8
braceleft 5 6 8
bracketleft 5 6 8
comma 5 7 8
less 5 7 8
#####################
# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? |
Insert 6 0 8
braceright 6 1 8
bracketright 6 1 8
apostrophe 6 2 8
quotedbl 6 2 8
Home 6 3 8
Shift_R 6 4 4
backslash 6 5 8
bar 6 5 8
Delete 6 6 8
question 6 7 8
slash 6 7 8
#####################
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
exclam 7 0 8
dead_grave 7 1 8 # Arrow_LFT <-
dead_perispomeni 7 1 8 # Arrow_LFT <-
Tab 7 2 16384 # Control <-
at 7 3 8
space 7 4 8
Control_L 7 5 8192 # CBM Key
Escape 7 7 8 # RUN/STOP <-
#####################
# |Bit 8 |HELP | KP 8| KP 5| TAB | KP 2| KP 4| KP 7| KP 1|
F2 8 0 8
KP_8 8 1 8
KP_5 8 2 8
F11 8 3 8 # TAB <-
KP_2 8 4 8
KP_4 8 5 8
KP_7 8 6 8
KP_1 8 7 8
#####################
# |Bit 9 | ESC | KP +| KP -| LF |KP CR| KP 6| KP 9| KP 3|
KP_Multiply 9 0 8
KP_Add 9 1 8
KP_Subtract 9 2 8
F4 9 3 8
KP_Enter 9 4 8
KP_6 9 5 8
KP_9 9 6 8
KP_3 9 7 8
#####################
# |Bit 10| ALT | KP 0| KP .|A.UP |A.DWN|A.LFT|A.RGT|NOSCR|
F9 10 0 8
KP_0 10 1 8
KP_Decimal 10 2 8
Up 10 3 8
#Down 10 4 8
Left 10 5 8
#Right 10 6 8
KP_Divide 10 7 8
####################
# Dead keys support for those using US-International keyboard layout.
dead_circumflex 2 3 8 # &
dead_acute 6 2 8 # ;
dead_diaeresis 6 2 8 # ]
grave 7 1 8 # Arrow_LFT <-
asciitilde 7 1 8 # Arrow_LFT <-
#####################
# letters and numbers
0 4 3 8
1 7 0 8
2 7 3 8
3 1 0 8
4 1 3 8
5 2 0 8
6 2 3 8
7 3 0 8
8 3 3 8
9 4 0 8
A 1 2 8
B 3 4 8
C 2 4 8
D 2 2 8
E 1 6 8
F 2 5 8
G 3 2 8
H 3 5 8
I 4 1 8
J 4 2 8
K 4 5 8
L 5 2 8
M 4 4 8
N 4 7 8
O 4 6 8
P 5 1 8
Q 7 6 8
R 2 1 8
S 1 5 8
T 2 6 8
U 3 6 8
V 3 7 8
W 1 1 8
X 2 7 8
Y 3 1 8
Z 1 4 8
a 1 2 8
b 3 4 8
c 2 4 8
d 2 2 8
e 1 6 8
f 2 5 8
g 3 2 8
h 3 5 8
i 4 1 8
j 4 2 8
k 4 5 8
l 5 2 8
m 4 4 8
n 4 7 8
o 4 6 8
p 5 1 8
q 7 6 8
r 2 1 8
s 1 5 8
t 2 6 8
u 3 6 8
v 3 7 8
w 1 1 8
x 2 7 8
y 3 1 8
z 1 4 8
##############################################################################

View File

@@ -0,0 +1,269 @@
# VICE GTK3 based keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE GTK3 v3.4
# Using default positional VICE layout.
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
# 64 shift lock
# 256 key is used for an alternative keyboard mapping
#
# Negative row values:
# 'keysym -1 n' joystick keymap A, direction n
# 'keysym -2 n' joystick keymap B, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
# 'keysym -5 n' joyport keypad, key n
#
# Joystick direction values:
# 0 Fire
# 1 South/West
# 2 South
# 3 South/East
# 4 West
# 5 East
# 6 North/West
# 7 North
# 8 North/East
#
# Joyport keypad key layout:
# --------------------------
# | 0 | 1 | 2 | 3 | 4 |
# --------------------------
# | 5 | 6 | 7 | 8 | 9 |
# --------------------------
# | 10 | 11 | 12 | 13 | 14 |
# --------------------------
# | 15 | 16 | 17 | 18 | 19 |
# --------------------------
#
# When a bigger spaced key is used,
# it uses the upper left most key value.
# Positional Mapping, US Layout, C64, X11
# C64 keyboard matrix:
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 2| 5 % | R | D | 6 & | C | F | T | X |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 4| 9 ) | I | J | 0 | M | K | O | N |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
!CLEAR
!LSHIFT 1 7
!RSHIFT 6 4
!VSHIFT RSHIFT
!SHIFTL LSHIFT
#####################
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
BackSpace 0 0 8
Return 0 1 8
Right 0 2 8
F7 0 3 8
F1 0 4 8
F3 0 5 8
F5 0 6 8
Down 0 7 8
#####################
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
numbersign 1 0 8
dollar 1 3 8
Shift_L 1 7 2
#####################
# |Bit 2| 5 % | R | D | 6 & | C | F | T | X |
percent 2 0 8
asciicircum 2 3 8
#####################
# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V |
ampersand 3 0 8
asterisk 3 3 8
#####################
# |Bit 4| 9 ) | I | J | 0 | M | K | O | N |
parenleft 4 0 8
parenright 4 3 8
#####################
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
underscore 5 0 8
minus 5 0 8
plus 5 3 8
equal 5 3 8
period 5 4 8
greater 5 4 1
semicolon 5 5 8
colon 5 5 8
braceleft 5 6 8
bracketleft 5 6 8
comma 5 7 8
less 5 7 8
#####################
# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? |
#sterling 6 0 8
Insert 6 0 8
braceright 6 1 8
bracketright 6 1 8
apostrophe 6 2 8
quotedbl 6 2 8
Home 6 3 8
Shift_R 6 4 4
backslash 6 5 8
bar 6 5 8
Delete 6 6 8
question 6 7 8
slash 6 7 8
#####################
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
exclam 7 0 8
asciitilde 7 1 8
grave 7 1 8
Tab 7 2 8
ISO_Left_Tab 7 2 8
at 7 3 8
space 7 4 8
Control_L 7 5 8
Escape 7 7 8
#####################
# letters and numbers
0 4 3 8
1 7 0 8
2 7 3 8
3 1 0 8
4 1 3 8
5 2 0 8
6 2 3 8
7 3 0 8
8 3 3 8
9 4 0 8
A 1 2 8
B 3 4 8
C 2 4 8
D 2 2 8
E 1 6 8
F 2 5 8
G 3 2 8
H 3 5 8
I 4 1 8
J 4 2 8
K 4 5 8
L 5 2 8
M 4 4 8
N 4 7 8
O 4 6 8
P 5 1 8
Q 7 6 8
R 2 1 8
S 1 5 8
T 2 6 8
U 3 6 8
V 3 7 8
W 1 1 8
X 2 7 8
Y 3 1 8
Z 1 4 8
a 1 2 8
b 3 4 8
c 2 4 8
d 2 2 8
e 1 6 8
f 2 5 8
g 3 2 8
h 3 5 8
i 4 1 8
j 4 2 8
k 4 5 8
l 5 2 8
m 4 4 8
n 4 7 8
o 4 6 8
p 5 1 8
q 7 6 8
r 2 1 8
s 1 5 8
t 2 6 8
u 3 6 8
v 3 7 8
w 1 1 8
x 2 7 8
y 3 1 8
z 1 4 8
# Restore key mappings
Page_Up -3 0
----
# Dead keys support for those using US-International keyboard layout.
dead_circumflex 2 3 8 # &
dead_tilde 7 1 8 # A_LFT <-
dead_grave 7 1 8 # A_LFT <-
dead_acute 6 2 8 # ;
dead_diaeresis 6 2 8 # ]
# joystick keymap A (port 1)
KP_8 -1 7 /* NumPad 8 -> UP */
KP_2 -1 2 /* NumPad 2 -> DOWN */
KP_4 -1 4 /* NumPad 4 -> LEFT */
KP_6 -1 5 /* NumPad 6 -> RIGHT */
KP_0 -1 0 /* NumPad 0 -> FIRE */
# joystick Keymap B (port 2)
KP_7 -2 7 /* NumPad 7 -> UP */
KP_3 -2 2 /* NumPad 3 -> DOWN */
KP_1 -2 4 /* NumPad 1 -> LEFT */
KP_9 -2 5 /* NumPad 9 -> RIGHT */
KP_Decimal -2 0 /* NumPad . -> FIRE */

View File

@@ -0,0 +1,294 @@
# GTK3-VICE keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE GTK3 v3.4
# Mapped for compatibility to PET Models with Business Keyboards only (3000B, 4000B and 80000 models).
# Based on C64 Positional Layout.
#
# ESCAPE is mapped to F1 Key.
# OFF/REVERSE is mapped to F3 Key.
# REPEAT is mapped to F5 Key.
# Backslash is mapped to £ (Pound) Key.
# TAB is mapped to CTRL Key.
# NumericPad Keys (1 to 0 and Dot) are accessed by pressing Commodore Key (C=).
# Brackets ([/]) Keys are accessed by pressing either Commodore Key (C=) ot Shift Key.
#
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
#
# Negative row values:
# 'keysym -1 n' joystick #1, direction n
# 'keysym -2 n' joystick #2, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
#
# this is a PET business (uk) keyboard mapping (positional)
# Business (UK) keyboard matrix:
#
# Keys starting with 'KP' are on the number pad.
#
# 0 1 2 3 4 5 6 7
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 0 | 2 | 5 | 8 | - | KP8 |crsr rgt| ^N | . |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 1 | 1 | 4 | 7 | 0 | KP7 | ^ |--------| KP9 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 2 | escape | s | f | h | ] .| k | ; .| KP5 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 3 | a | d | g | j | return | l | @ .| KP6 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 4 | tab | w | r | y | \ .| i | p | del |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 5 | q | e | t | u |crsr dwn| o | [ .| KP4 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 6 |l shift | c | b | . | KP. | ^Y |r shift | KP3 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 7 | z | v | n | , | KP0 | ^O | repeat | KP2 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 8 | RVS | x | space | m | home | ^U | / | KP1 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 9 | <-- | 3 | 6 | 9 |runstop | : |--------| ^V |
# +--------+--------+--------+--------+--------+--------+--------+--------+
#
# ^N = both shifts + 2
# ^Y = left shift + TAB + I
# ^O = Z + A + L
# ^U = RVS + A + L
# ^V = TAB + <- + DEL
# Business (US) matrix (differences to UK)
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 2 | | | | | ; | | \ | |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 3 | | | | | | | [ | |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 4 | | | | | @ | | | |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 5 | | | | | | | ] | |
# +--------+--------+--------+--------+--------+--------+--------+--------+
!CLEAR
!LSHIFT 6 0
!RSHIFT 6 6
!VSHIFT RSHIFT
Right 0 5 8
Down 5 4 8
Shift_L 6 0 2
Shift_R 6 6 4
Return 3 4 8
# CLR/HOME
Home 8 4 8
# RUN/STOP
Èscape 9 4 8
# INST/DEL (Keymmodore maps both INST/DEL and RESTORE the same because there is no RESTORE Key in PET Keyboards).
BackSpace 4 7 8
# ESCAPE (Using F1 Key)
F1 2 0 8
# OFF/RVS (Using F5 Key)
F3 8 0 8
# REPEAT (Using F7 Key)
F7 7 6 8
# Arrow Up
Delete 1 5 8
# Arrow Left
dead_grave 9 0 0
dead_perispomeni 9 0 1
grave 9 0 0
asciitilde 9 0 1
# TAB
Tab 4 0 0
ISO_Left_Tab 4 0 1
# Multiply/Colon (*/:)
bracketright 9 5 1
braceright 9 5 1
semicolon 9 5 0
# At (@)
bracketleft 3 6 0
braceleft 3 6 0
# Backslash (\) (Using Pound Key)
Insert 4 4 0
F4 4 4 1
# Question/Slash (? / /)
slash 8 6 0
question 8 6 1
# Addition / Semicolon (+/;)
minus 2 6 1
underscore 2 6 1
dead_acute 2 6 0
apostrophe 2 6 0
# Equal / Minus (=/-)
backslash 0 3 1
bar 0 3 1
equal 0 3 0
plus 0 3 0
# Brace Left
colon 5 6 1
F10 5 6 8
# Brace Right
dead_diaeresis 2 4 0
quotedbl 2 4 0
F11 2 4 8
# Less/Comma (</,)
less 7 3 1
comma 7 3 0
# Greater/Period (>/.)
greater 6 3 1
period 6 3 0
# Space bar
space 8 2 8
# Num_Pad
KP_1 8 7 0
KP_2 7 7 0
KP_3 6 7 0
KP_4 5 7 0
KP_5 2 7 0
KP_6 3 7 0
KP_7 1 4 0
KP_8 0 4 0
KP_9 1 7 0
KP_0 7 4 0
KP_Decimal 6 4 0
# Letters
a 3 0 0
b 6 2 0
c 6 1 0
d 3 1 0
e 5 1 0
f 2 2 0
g 3 2 0
h 2 3 0
i 4 5 0
j 3 3 0
k 2 5 0
l 3 5 0
m 8 3 0
n 7 2 0
o 5 5 0
p 4 6 0
q 5 0 0
r 4 2 0
s 2 1 0
t 5 2 0
u 5 3 0
v 7 1 0
w 4 1 0
x 8 1 0
y 4 3 0
z 7 0 0
A 3 0 1
B 6 2 1
C 6 1 1
D 3 1 1
E 5 1 1
F 2 2 1
G 3 2 1
H 2 3 1
I 4 5 1
J 3 3 1
K 2 5 1
L 3 5 1
M 8 3 1
N 7 2 1
O 5 5 1
P 4 6 1
Q 5 0 1
R 4 2 1
S 2 1 1
T 5 2 1
U 5 3 1
V 7 1 1
W 4 1 1
X 8 1 1
Y 4 3 1
Z 7 0 1
# Top row of keys:
1 1 0 0 # 1
exclam 1 0 1 # shift 1
2 0 0 0 # 2
at 0 0 1 # shift 2
3 9 1 0 # 3
numbersign 9 1 1 # shift 3
4 1 1 0 # 4
dollar 1 1 1 # shift 4
5 0 1 0 # 5
percent 0 1 1 # shift 5
6 9 2 0 # 6
dead_circumflex 9 2 1 # shift 6
asciicircum 9 2 1 # shift 6
7 1 2 0 # 7
ampersand 1 2 1 # shift 7
8 0 2 0 # 8
asterisk 0 2 1 # shift 8
9 9 3 0 # 9
parenleft 9 3 1 # shift 9
0 1 3 0 # 0
parenright 1 3 1 # shift 0
# Joystick 2
#
w -2 6
e -2 7
r -2 8
s -2 4
f -2 5
x -2 1
c -2 2
v -2 3
space -2 0

View File

@@ -0,0 +1,381 @@
# GTK3-VICE keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro
# Tested with VICE GTK3 v3.4
# Mapped for compatibility to PET Models with Graphics Keyboards only (2000, 3000, 4000, Non-B models).
#
# PET Graphics Keyboard has only one character and one graphics PETSCII per key.
# Keymmodore uses C= Key to access a layer with PET Keys corresponding to shifted symbols of C-64 Keyboard (!/"/#/$/%/&/'/(/)/[/]/</>/?) so you have to hold C= for those keys.
# You can access PET graphics PETSCII of those keys by pressing Shift and/or C=. Graphics PETSCII will match the the original PET Graphics Keyboard layout (not labeled in C64).
#
# Graphics PETSCII set of PET and C-64 are the same so there is no missing graphics PETSCII codes. They just have been redistributed to match C-64 Keyboard.
# ANY left C-64 labeled Graphics PETSCII works using C= Key thanks to being remapped by Keymmodore-64.
# ANY right C-64 labeled Graphics PETSCII works using Shift keys thanks to being remapped by VICE (this file).
#
# OFF/REVERSE key is mapped to CTRL (Control) Key.
# Backslash Key is mapped to £ (Pound) Key.
#
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
# 256 key is used for an alternative keyboard mapping
#
# Negative row values:
# 'keysym -1 n' joystick #1, direction n
# 'keysym -2 n' joystick #2, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
#
# this is a PET graphics keyboard mapping (positional)
#
# Graphics keyboard matrix:
#
# 0 1 2 3 4 5 6 7
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 0 | ! | # | % | & | ( | <-- | home |crsr rgt|
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 1 | " | $ | ' | \ | ) |--------|crsr dwn| del |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 2 | q | e | t | u | o | ^ | 7 | 9 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 3 | w | r | y | i | p |--------| 8 | / |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 4 | a | d | g | j | l |--------| 4 | 6 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 5 | s | f | h | k | : |--------| 5 | * |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 6 | z | c | b | m | ; | return | 1 | 3 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 7 | x | v | n | , | ? |--------| 2 | + |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 8 |l shift | @ | ] |--------| > |r shift | 0 | - |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 9 | rvs on | [ | space | < | stop |--------| . | = |
# +--------+--------+--------+--------+--------+--------+--------+--------+
#
# The original gfx keyboard reflects the matrix perfectly:
#
# ! " # $ % ' & \ ( ) <- ^s ^q ^] ^t
# q w e r t y u i o p ^ 7 8 9 /
# a s d f g h j k l : ^m 4 5 6 *
# z x c v b n m , ; ? ^m 1 2 3 +
# LS ^r @ [ ] SPACE < > ^c RS 0 . - =
#
# http://www.6502.org/users/andre/petindex/keyboards.html
!CLEAR
!LSHIFT 8 0
!RSHIFT 8 5
!VSHIFT RSHIFT
!SHIFTL LSHIFT
###### Same Keys than C-64 Keyboard #######
# RUN/STOP
Escape 9 4 8
# CLR/HOME
Home 0 6 8
# Right/Left Cursor
Right 0 7 8
#Down/Right Cursor
Down 1 6 8
# INST/DEL. (Keymmodore maps both INST/DEL and RESTORE the same because there is no RESTORE Key in PET Keyboards).
BackSpace 1 7 0
# SHIFT
Shift_L 8 0 2
Shift_R 8 5 4
# ENTER
Return 6 5 8
# Spacebar
space 9 2 8
# Arrow Up (Only key with one PETSCII and identical function than C64)
Delete 2 5 8
# Arrow Left
dead_grave 0 5 0
grave 0 5 0
# Equals (=)
backslash 9 7 0
bar 9 7 1
#### (Scattered) Symbol Keys "merged" again into C-64 Keys with no PETSCII
#Colon (:) and Brace Left ([)
semicolon 5 4 0
colon 5 4 1
KP_Subtract 9 1 8 /* Numpad - -> [ */
# Semicolon (;) and Brace Right (])
dead_acute 6 4 0
apostrophe 6 4 0
dead_diaeresis 6 4 1
quotedbl 6 4 1
KP_Add 8 2 8 /* Numpad + -> ] */
# Comma (,) and Less(<)
comma 7 3 0
less 7 3 1
Page_Up 9 3 8 /* PgUp -> < */
# Period (.) and Greater (>)
period 9 6 0
greater 9 6 1
Page_Down 8 4 8 /* PgDown -> > */
# Slash (/) and Question (?)
slash 3 7 0
question 3 7 1
KP_Divide 7 4 8 /* Numpad / -> ? */
#### (Scattered) Symbols and Numbers "merged" again into C-64 Number Keys
1 6 6 0
exclam 6 6 1
F1 0 0 8
2 7 6 0
at 7 6 1
F2 1 0 8
3 6 7 0
numbersign 6 7 1
F3 0 1 8
4 4 6 0
dollar 4 6 1
F4 1 1 8
5 5 6 0
percent 5 6 1
F5 0 2 8
6 4 7 0
dead_circumflex 4 7 1
asciicircum 4 7 1
F6 0 3 8
7 2 6 0
ampersand 2 6 1
Up 1 2 8
8 3 6 0
asterisk 3 6 1
Left 0 4 8
9 2 7 0
parenleft 2 7 1
F9 1 4 8
0 8 6 0
parenright 8 6 1
###### Keys not present in C64 keyboard ######
# Backslash (\) (Using Pound (£) Key in C64 Keyboard)
Tab 1 3 0
ISO_Left_Tab 1 4 1
# OFF / RVS (Using CTRL key in C64 Keyboard)
Insert 9 0 8
###### Keys matching C64 keyboard having one character and two PETSCII ######
# Right PETSCII with any Shift Key.
# Left PETSCII with Commodore Key.
# PETSCII are remapped to match C64 Keyboard.
# Plus (+)
minus 7 7 0
underscore 9 1 1
# Minus (-)
equal 8 7 0
plus 8 2 1
KP_Multiply 1 3 8 /* Numpad * -> \ PETSCII */
# Multiply (*)
bracketright 5 7 0
braceright 8 1 1
dead_perispomeni 0 5 1
asciitilde 0 5 1
# At (@)
bracketleft 8 1 0
braceleft 5 4 1
###### Letter Keys ######
# Right PETSCII with any Shift Key.
# Left PETSCII with Commodore Key.
# PETSCII are remapped to match C64 Keyboard.
# Q Key
q 2 0 0
Q 2 0 1
F10 7 7 1
# W Key
w 3 0 0
W 3 0 1
# E Key
e 2 1 0
E 2 1 1
# R Key
r 3 1 0
R 3 1 1
# T Key
t 2 2 0
T 2 2 1
# Y Key
y 3 2 0
Y 3 2 1
# U Key
u 2 3 0
U 2 3 1
# I KEY
i 3 3 0
I 3 3 1
# O Key
o 2 4 0
O 2 4 1
#P Key
p 3 4 0
P 3 4 1
# A Key
a 4 0 0
A 4 0 1
# S Key
s 5 0 0
S 5 0 1
# D Key
d 4 1 8
D 4 1 1
# F Key
f 5 1 0
F 5 1 1
# G Key
g 4 2 0
G 4 2 1
# H Key
h 5 2 0
H 5 2 1
# J Key
j 4 3 0
J 4 3 1
# K Key
k 5 3 0
K 5 3 1
# L Key
l 4 4 0
L 4 4 1
# Z Key
z 6 0 0
Z 6 0 1
F11 8 7 1
# X Key
x 7 0 0
X 7 0 1
# C Key
c 6 1 0
C 6 1 1
# V Key
v 7 1 0
V 7 1 1
# B Key
b 6 2 0
B 6 2 1
# N Key
n 7 2 0
N 7 2 1
Alt_L 5 7 1
# M Key
m 6 3 0
M 6 3 1
# joystick keymap A (port 1)
KP_8 -1 7 /* NumPad 8 -> UP */
KP_2 -1 2 /* NumPad 2 -> DOWN */
KP_4 -1 4 /* NumPad 4 -> LEFT */
KP_6 -1 5 /* NumPad 6 -> RIGHT */
KP_0 -1 0 /* NumPad 0 -> FIRE */
# joystick Keymap B (port 2)
KP_7 -2 7 /* NumPad 7 -> UP */
KP_3 -2 2 /* NumPad 3 -> DOWN */
KP_1 -2 4 /* NumPad 1 -> LEFT */
KP_9 -2 5 /* NumPad 9 -> RIGHT */
KP_Decimal -2 0 /* NumPad . -> FIRE */

View File

@@ -0,0 +1,267 @@
# GTK3-VICE keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro
# Mapped for compatibility to PLUS/4 and C16.
# If C64 keyboard has the same key, function is prefered over position (like CLR/HOME, Equal and Pound Keys).
# The most important differences are:
# Arrow Left is ESCAPE
# Arrow Up Key is Cursor Up
# RESTORE Key is Cursor Left
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
#
# Negative row values:
# 'keysym -1 n' joystick #1, direction n
# 'keysym -2 n' joystick #2, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
# 'keysym -5 n' joyport keypad, key n
#
# Joystick direction values:
# 0 Fire
# 1 South/West
# 2 South
# 3 South/East
# 4 West
# 5 East
# 6 North/West
# 7 North
# 8 North/East
#
# Joyport keypad key layout:
# --------------------------
# | 0 | 1 | 2 | 3 | 4 |
# --------------------------
# | 5 | 6 | 7 | 8 | 9 |
# --------------------------
# | 10 | 11 | 12 | 13 | 14 |
# --------------------------
# | 15 | 16 | 17 | 18 | 19 |
# --------------------------
#
# When a bigger spaced key is used,
# it uses the upper left most key value.
#
#############################################################################
#
# Commodore 16/116/Plus-4 keyboard matrix:
#
# 0 1 2 3 4 5 6 7
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 0 |INST-DEL|RETURN |POUND |HELP-F7 |F1-F4 |F2-F5 |F3-F6 |@ |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 1 |3 # |W |A |4 $ |Z |S |E |SHIFT |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 2 |5 % |R |D |6 & |C |F |T |X |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 3 |7 ' |Y |G |8 ( |B |H |U |V |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 4 |9 ) |I |J |0 ^ |M |K |O |N |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 5 |DOWN |P |L |UP |. > |: [ |- |, < |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 6 |LEFT |* |; ] |RIGHT |ESC |= |+ |/ ? |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 7 |1 ! |CLR-HOME|CTRL |2 " |SPACE |C= |Q |RUN-STOP|
# +--------+--------+--------+--------+--------+--------+--------+--------+
#
#############################################################################
!CLEAR
!LSHIFT 1 7
!RSHIFT 1 7
!VSHIFT RSHIFT
# Tab = CTRL
Tab 7 2 8
# Shift + Tab = CTRL
ISO_Left_Tab 7 2 8
# Control_L = CBM
Control_L 7 5 8
#Backspace = INST/DEL
BackSpace 0 0 8
Delete 5 3 8
Down 5 0 8
Page_Up 6 0 8
Right 6 3 8
# ESCAPE = RUN/STOP
Escape 7 7 8
# Grave = ESCAPE
grave 6 4 8
asciitilde 6 4 8
dead_grave 6 4 8
dead_perispomeni 6 4 8
# Insert = Pound
Insert 0 2 8
# Minus and Underscore = Plus
minus 6 6 0
underscore 6 6 8
# Equal and Plus = Minus
equal 5 6 0
plus 5 6 8
# Bracket/Brace Left = At
bracketleft 0 7 8
braceleft 0 7 8
#Bracket/Brace Right = Asterisk
braceright 6 1 8
bracketright 6 1 8
1 7 0 8
exclam 7 0 8
2 7 3 8
at 7 3 8
3 1 0 8
numbersign 1 0 8
4 1 3 8
dollar 1 3 8
5 2 0 8
percent 2 0 8
6 2 3 8
dead_circumflex 2 3 8
asciicircum 2 3 8
7 3 0 8
ampersand 3 0 8
8 3 3 8
asterisk 3 3 8
9 4 0 8
parenleft 4 0 8
0 4 3 8
parenright 4 3 8
slash 6 7 8
question 6 7 8
backslash 6 5 8
bar 6 5 8
apostrophe 6 2 8
quotedbl 6 2 8
dead_acute 6 2 8
dead_diaeresis 6 2 8
colon 5 5 8
semicolon 5 5 8
less 5 7 8
comma 5 7 8
greater 5 4 8
period 5 4 8
parenleft 4 0 8
parenright 4 3 8
F1 0 4 8
F3 0 5 8
F5 0 6 8
F7 0 3 8
Home 7 1 8
Return 0 1 8
Shift_L 1 7 2
Shift_R 1 7 4
space 7 4 8
A 1 2 8
B 3 4 8
C 2 4 8
D 2 2 8
E 1 6 8
F 2 5 8
G 3 2 8
H 3 5 8
I 4 1 8
J 4 2 8
K 4 5 8
L 5 2 8
M 4 4 8
N 4 7 8
O 4 6 8
P 5 1 8
Q 7 6 8
R 2 1 8
S 1 5 8
T 2 6 8
U 3 6 8
V 3 7 8
W 1 1 8
X 2 7 8
Y 3 1 8
Z 1 4 8
a 1 2 8
b 3 4 8
c 2 4 8
d 2 2 8
e 1 6 8
f 2 5 8
g 3 2 8
h 3 5 8
i 4 1 8
j 4 2 8
k 4 5 8
l 5 2 8
m 4 4 8
n 4 7 8
o 4 6 8
p 5 1 8
q 7 6 8
r 2 1 8
s 1 5 8
t 2 6 8
u 3 6 8
v 3 7 8
w 1 1 8
x 2 7 8
y 3 1 8
z 1 4 8
# joystick keymap A (port 1)
KP_8 -1 7 /* NumPad 8 -> UP */
KP_2 -1 2 /* NumPad 2 -> DOWN */
KP_4 -1 4 /* NumPad 4 -> LEFT */
KP_6 -1 5 /* NumPad 6 -> RIGHT */
KP_0 -1 0 /* NumPad 0 -> FIRE */
# joystick Keymap B (port 2)
KP_7 -2 7 /* NumPad 7 -> UP */
KP_3 -2 2 /* NumPad 3 -> DOWN */
KP_1 -2 4 /* NumPad 1 -> LEFT */
KP_9 -2 5 /* NumPad 9 -> RIGHT */
KP_Decimal -2 0 /* NumPad . -> FIRE */

View File

@@ -0,0 +1,270 @@
# VICE GTK3 based keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE GTK3 v3.4
# Using default positional VICE layout.
#
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
# 64 shift lock
# 256 key is used for an alternative keyboard mapping
#
# Negative row values:
# 'keysym -1 n' joystick keymap A, direction n
# 'keysym -2 n' joystick keymap B, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
# 'keysym -5 n' joyport keypad, key n
#
# Joystick direction values:
# 0 Fire
# 1 South/West
# 2 South
# 3 South/East
# 4 West
# 5 East
# 6 North/West
# 7 North
# 8 North/East
#
# Joyport keypad key layout:
# --------------------------
# | 0 | 1 | 2 | 3 | 4 |
# --------------------------
# | 5 | 6 | 7 | 8 | 9 |
# --------------------------
# | 10 | 11 | 12 | 13 | 14 |
# --------------------------
# | 15 | 16 | 17 | 18 | 19 |
# --------------------------
#
# When a bigger spaced key is used,
# it uses the upper left most key value.
# Positional Mapping, US Layout, VIC20, X11
# VIC20 Keyboard matrix
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0| 1 ! |A_LFT| CTRL| R/S |SPACE| C= | Q | 2 " |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 1| 3 # | W | A | S_L | Z | S | E | 4 $ |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 2| 5 % | R | D | X | C | F | T | 6 & |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 3| 7 ' | Y | G | V | B | H | U | 8 ( |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 4| 9 ) | I | J | N | M | K | O | 0 |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 5| + | P | L | , < | . > | : [ | @ | - |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 6|POUND| * | ; ] | / ? | S_R | = | A_UP| HOME|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 7| DEL |Retrn|C_L/R|C_U/D| F1 | F3 | F5 | F7 |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
!CLEAR
!LSHIFT 1 3
!RSHIFT 6 4
!VSHIFT RSHIFT
#####################
# |Bit 0| 1 ! |A_LFT| CTRL| R/S |SPACE| C= | Q | 2 " |
exclam 0 0 8
# grave / tilde -> arrow left
asciitilde 0 1 8
grave 0 1 8
# Tab = CTRL
Tab 0 2 8
# Shift + Tab = CTRL
ISO_Left_Tab 0 2 8
Escape 0 3 8
space 0 4 8
# Control_L = CBM
Control_L 0 5 8
at 0 7 8
#####################
# |Bit 1| 3 # | W | A | S_L | Z | S | E | 4 $ |
numbersign 1 0 8
Shift_L 1 3 2
dollar 1 7 8
#####################
# |Bit 2| 5 % | R | D | X | C | F | T | 6 & |
percent 2 0 8
asciicircum 2 7 8
#####################
# |Bit 3| 7 ' | Y | G | V | B | H | U | 8 ( |
ampersand 3 0 8
asterisk 3 7 8
#####################
# |Bit 4| 9 ) | I | J | N | M | K | O | 0 |
parenleft 4 0 8
parenright 4 7 8
#####################
# |Bit 5| + | P | L | , < | . > | : [ | @ | - |
minus 5 0 8
underscore 5 0 8
comma 5 3 8
less 5 3 8
period 5 4 8
greater 5 4 8
colon 5 5 8
semicolon 5 5 8
braceleft 5 6 8
bracketleft 5 6 8
plus 5 7 8
equal 5 7 8
#####################
# |Bit 6|POUND| * | ; ] | / ? | S_R | = | A_UP| HOME|
sterling 6 0 8
Insert 6 0 8
braceright 6 1 8
bracketright 6 1 8
apostrophe 6 2 8
quotedbl 6 2 8
question 6 3 8
slash 6 3 8
Shift_R 6 4 4
backslash 6 5 8
bar 6 5 8
Delete 6 6 8
Home 6 7 8
#####################
# |Bit 7| DEL |Retrn|C_L/R|C_U/D| F1 | F3 | F5 | F7 |
BackSpace 7 0 8
Return 7 1 8
Right 7 2 8
Down 7 3 8
F1 7 4 8
F3 7 5 8
F5 7 6 8
F7 7 7 8
#####################
# letters and numbers
0 4 7 8
1 0 0 8
2 0 7 8
3 1 0 8
4 1 7 8
5 2 0 8
6 2 7 8
7 3 0 8
8 3 7 8
9 4 0 8
A 1 2 8
B 3 4 8
C 2 4 8
D 2 2 8
E 1 6 8
F 2 5 8
G 3 2 8
H 3 5 8
I 4 1 8
J 4 2 8
K 4 5 8
L 5 2 8
M 4 4 8
N 4 3 8
O 4 6 8
P 5 1 8
Q 0 6 8
R 2 1 8
S 1 5 8
T 2 6 8
U 3 6 8
V 3 3 8
W 1 1 8
X 2 3 8
Y 3 1 8
Z 1 4 8
a 1 2 8
b 3 4 8
c 2 4 8
d 2 2 8
e 1 6 8
f 2 5 8
g 3 2 8
h 3 5 8
i 4 1 8
j 4 2 8
k 4 5 8
l 5 2 8
m 4 4 8
n 4 3 8
o 4 6 8
p 5 1 8
q 0 6 8
r 2 1 8
s 1 5 8
t 2 6 8
u 3 6 8
v 3 3 8
w 1 1 8
x 2 3 8
y 3 1 8
z 1 4 8
# Restore key mappings
Page_Up -3 0
# Dead keys support for those using US-International keyboard layout.
dead_circumflex 2 7 8 # &
dead_tilde 0 1 8 # A_LFT <-
dead_grave 0 1 8 # A_LFT <-
dead_acute 6 2 8 # ;
dead_diaeresis 6 2 8 # ]
# joystick keymap A (port 1)
KP_8 -1 7 /* NumPad 8 -> UP */
KP_2 -1 2 /* NumPad 2 -> DOWN */
KP_4 -1 4 /* NumPad 4 -> LEFT */
KP_6 -1 5 /* NumPad 6 -> RIGHT */
KP_0 -1 0 /* NumPad 0 -> FIRE */
# joystick Keymap B (port 2)
KP_7 -2 7 /* NumPad 7 -> UP */
KP_3 -2 2 /* NumPad 3 -> DOWN */
KP_1 -2 4 /* NumPad 1 -> LEFT */
KP_9 -2 5 /* NumPad 9 -> RIGHT */
KP_Decimal -2 0 /* NumPad . -> FIRE */

View File

@@ -0,0 +1,217 @@
# VICE SDL based keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE 3.1 SDL2 (https://vice-emu.sourceforge.io/windows.html)
# Mapped for positional compatibility to C-128 Keyboards.
# Based on C64 Positional Layout.
# Keys not present in C-64 (like NumPad Keys, ESC, TAB) are accessed with Right Shift Key.
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
#
# Negative row values:
# 'keysym -1 n' joystick #1, direction n
# 'keysym -2 n' joystick #2, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
#
# C128 Keyboard matrix
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 2| 5 % | R | D | 6 & | C | F | T | X |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 4| 9 ) | I | J | 0 | M | K | O | N |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 8 |HELP | KP 8| KP 5| TAB | KP 2| KP 4| KP 7| KP 1|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 9 | ESC | KP +| KP -| LF |KP CR| KP 6| KP 9| KP 3|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 10| ALT | KP 0| KP .|A.UP |A.DWN|A.LFT|A.RGT|NOSCR|
# +------+-----+-----+-----+-----+-----+-----+-----+-----+
!CLEAR
!LSHIFT 1 7
!RSHIFT 6 4
!VSHIFT RSHIFT
# 40/80 column key
287 -4 0 /* F6 -> 40/80 DISPLAY */
# CAPS LOCK (ASCII/DIN) key
291 -4 1 /* F10 -> CAPS LOCK */
# RESTORE key
280 -3 0
#####################
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
8 0 0 8
13 0 1 8
275 0 2 8
282 0 4 8
284 0 5 8
286 0 6 8
288 0 3 8
274 0 7 8
#####################
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
304 1 7 2
#####################
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
45 5 0 8
61 5 3 8
46 5 4 8
59 5 5 8
91 5 6 8
44 5 7 8
#####################
# |Bit 6| POUND | * | ; ] | HOME| S_R | = | A_UP| / ? |
277 6 0 8
93 6 1 8
39 6 2 8
278 6 3 8
303 6 4 4
92 6 5 8
127 6 6 8
47 6 7 8
#####################
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
96 7 1 8 # Arrow_LFT
9 7 2 8 /* TAB -> Control */
32 7 4 8 # Space Bar
306 7 5 8 # CBM Key
27 7 7 8 # RUN/STOP
#####################
# |Bit 8 |HELP | KP 8| KP 5| TAB | KP 2| KP 4| KP 7| KP 1|
283 8 0 8 /* F2 -> HELP */
264 8 1 8
261 8 2 8
292 8 3 8 /* F11 -> TAB */
258 8 4 8
260 8 5 8
263 8 6 8
257 8 7 8
#####################
# |Bit 9 | ESC | KP +| KP -| LF |KP CR| KP 6| KP 9| KP 3|
268 9 0 8
270 9 1 8
269 9 2 8
285 9 3 8 /* F4 -> LINE FEED */
271 9 4 8
262 9 5 8
265 9 6 8
259 9 7 8
#####################
# |Bit 10| ALT | KP 0| KP .|A.UP |A.DWN|A.LFT|A.RGT|NOSCR|
290 10 0 8
256 10 1 8
266 10 2 8
273 10 3 8
276 10 5 8
267 10 7 8 /* Numpad / -> NO SCROLL */
# Numbers
49 7 0 8 /* 1 -> 1 */
50 7 3 8 /* 2 -> 2 */
51 1 0 8 /* 3 -> 3 */
52 1 3 8 /* 4 -> 4 */
53 2 0 8 /* 5 -> 5 */
54 2 3 8 /* 6 -> 6 */
55 3 0 8 /* 7 -> 7 */
56 3 3 8 /* 8 -> 8 */
57 4 0 8 /* 9 -> 9 */
48 4 3 8 /* 0 -> 0 */
# Letters
113 7 6 8 /* Q -> Q */
119 1 1 8 /* W -> W */
101 1 6 8 /* E -> E */
114 2 1 8 /* R -> R */
116 2 6 8 /* T -> T */
121 3 1 8 /* Y -> Y */
117 3 6 8 /* U -> U */
105 4 1 8 /* I -> I */
111 4 6 8 /* O -> O */
112 5 1 8 /* P -> P */
97 1 2 8 /* A -> A */
115 1 5 8 /* S -> S */
100 2 2 8 /* D -> D */
102 2 5 8 /* F -> F */
103 3 2 8 /* G -> G */
104 3 5 8 /* H -> H */
106 4 2 8 /* J -> J */
107 4 5 8 /* K -> K */
108 5 2 8 /* L -> L */
122 1 4 8 /* Z -> Z */
120 2 7 8 /* X -> X */
99 2 4 8 /* C -> C */
118 3 7 8 /* V -> V */
98 3 4 8 /* B -> B */
110 4 7 8 /* N -> N */
109 4 4 8 /* M -> M */

View File

@@ -0,0 +1,184 @@
# VICE SDL based keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE 3.1 SDL2 (https://vice-emu.sourceforge.io/windows.html)
# Using default positional VICE layout.
#
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
# 64 shift lock
# 256 key is used for an alternative keyboard mapping
#
# Negative row values:
# 'keysym -1 n' joystick keymap A, direction n
# 'keysym -2 n' joystick keymap B, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
# 'keysym -5 n' joyport keypad, key n
#
# Joystick direction values:
# 0 Fire
# 1 South/West
# 2 South
# 3 South/East
# 4 West
# 5 East
# 6 North/West
# 7 North
# 8 North/East
#
# Joyport keypad key layout:
# --------------------------
# | 0 | 1 | 2 | 3 | 4 |
# --------------------------
# | 5 | 6 | 7 | 8 | 9 |
# --------------------------
# | 10 | 11 | 12 | 13 | 14 |
# --------------------------
# | 15 | 16 | 17 | 18 | 19 |
# --------------------------
#
# When a bigger spaced key is used,
# it uses the upper left most key value.
# C64 keyboard matrix:
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0| DEL |Retrn|C_L/R| F7 | F1 | F3 | F5 |C_U/D|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 1| 3 # | W | A | 4 $ | Z | S | E | S_L |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 2| 5 % | R | D | 6 & | C | F | T | X |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 3| 7 ' | Y | G | 8 ( | B | H | U | V |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 4| 9 ) | I | J | 0 | M | K | O | N |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 5| + | P | L | - | . > | : [ | @ | , < |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 6|POUND| * | ; ] | HOME| S_R | = | A_UP| / ? |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 7| 1 ! |A_LFT| CTRL| 2 " |SPACE| C= | Q | R/S |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
!CLEAR
!LSHIFT 1 7
!RSHIFT 6 4
!VSHIFT RSHIFT
!SHIFTL LSHIFT
27 7 7 8 /* ESC -> Run/Stop */
49 7 0 8 /* 1 -> 1 */
50 7 3 8 /* 2 -> 2 */
51 1 0 8 /* 3 -> 3 */
52 1 3 8 /* 4 -> 4 */
53 2 0 8 /* 5 -> 5 */
54 2 3 8 /* 6 -> 6 */
55 3 0 8 /* 7 -> 7 */
56 3 3 8 /* 8 -> 8 */
57 4 0 8 /* 9 -> 9 */
48 4 3 8 /* 0 -> 0 */
45 5 0 8 /* Minus -> Plus */
61 5 3 8 /* Equal -> Minus */
8 0 0 8 /* Backspace -> Del */
9 7 2 8 /* TAB -> Ctrl */
113 7 6 8 /* Q -> Q */
119 1 1 8 /* W -> W */
101 1 6 8 /* E -> E */
114 2 1 8 /* R -> R */
116 2 6 8 /* T -> T */
121 3 1 8 /* Y -> Y */
117 3 6 8 /* U -> U */
105 4 1 8 /* I -> I */
111 4 6 8 /* O -> O */
112 5 1 8 /* P -> P */
91 5 6 8 /* [ -> @ */
93 6 1 8 /* ] -> * */
13 0 1 8 /* Return -> Return */
306 7 5 8 /* Left Ctrl -> CBM */
97 1 2 8 /* A -> A */
115 1 5 8 /* S -> S */
100 2 2 8 /* D -> D */
102 2 5 8 /* F -> F */
103 3 2 8 /* G -> G */
104 3 5 8 /* H -> H */
106 4 2 8 /* J -> J */
107 4 5 8 /* K -> K */
108 5 2 8 /* L -> L */
59 5 5 8 /* ; -> : */
39 6 2 8 /* ' -> ; */
96 7 1 8 /* ` -> Left Arrow */
92 6 5 8 /* \ -> = */
304 1 7 2 /* Left Shift -> Left Shift */
301 1 7 64 /* Caps Lock -> Shift Lock */
122 1 4 8 /* Z -> Z */
120 2 7 8 /* X -> X */
99 2 4 8 /* C -> C */
118 3 7 8 /* V -> V */
98 3 4 8 /* B -> B */
110 4 7 8 /* N -> N */
109 4 4 8 /* M -> M */
44 5 7 8 /* , -> , */
46 5 4 8 /* . -> . */
47 6 7 8 /* / -> / */
303 6 4 4 /* Right Shift -> Right Shift */
32 7 4 8 /* Space -> Space */
282 0 4 8 /* F1 -> F1 */
283 0 4 1 /* F2 -> F2 */
284 0 5 8 /* F3 -> F3 */
285 0 5 1 /* F4 -> F4 */
286 0 6 8 /* F5 -> F5 */
287 0 6 1 /* F6 -> F6 */
288 0 3 8 /* F7 -> F7 */
289 0 3 1 /* F8 -> F8 */
278 6 3 8 /* Home -> CLR/HOME */
273 0 7 1 /* Up -> CRSR UP */
276 0 2 1 /* Left -> CRSR LEFT */
275 0 2 8 /* Right -> CRSR RIGHT */
274 0 7 8 /* Down -> CRSR DOWN */
277 6 0 8 /* Ins -> Pound */
127 6 6 8 /* Del -> Up Arrow */
# Restore key mappings
280 -3 0
# joystick keymap A (port 1)
264 -1 7 /* NumPad 8 -> UP */
258 -1 2 /* NumPad 2 -> DOWN */
260 -1 4 /* NumPad 4 -> LEFT */
262 -1 5 /* NumPad 6 -> RIGHT */
256 -1 0 /* NumPad 0 -> FIRE */
# joystick Keymap B (port 2)
263 -2 7 /* NumPad 7 -> UP */
259 -2 2 /* NumPad 3 -> DOWN */
257 -2 4 /* NumPad 1 -> LEFT */
265 -2 5 /* NumPad 9 -> RIGHT */
266 -2 0 /* NumPad . -> FIRE */

View File

@@ -0,0 +1,239 @@
# VICE SDL keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE 3.1 SDL2 (https://vice-emu.sourceforge.io/windows.html)
# Mapped for compatibility to PET Models with Business Keyboards only (3000B, 4000B and 8000 models).
# Based on C64 Positional Layout.
#
# ESCAPE is mapped to F1 Key.
# OFF/REVERSE is mapped to F3 Key.
# REPEAT is mapped to F5 Key.
# Backslash is mapped to £ (Pound) Key.
# TAB is mapped to CTRL Key.
# NumericPad Keys (1 to 0 and Dot) and Brackets ([/]) are accessed by pressing Commodore Key (C=).
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
#
# Negative row values:
# 'keysym -1 n' joystick #1, direction n
# 'keysym -2 n' joystick #2, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
#
# this is a PET business (uk) keyboard mapping (symbolic)
# Business (UK) keyboard matrix:
#
# Keys starting with 'KP' are on the number pad.
#
# 0 1 2 3 4 5 6 7
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 0 | 2 | 5 | 8 | - | KP8 |crsr rgt| ^N | . |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 1 | 1 | 4 | 7 | 0 | KP7 | ^ |--------| KP9 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 2 | escape | s | f | h | ] | k | ; | KP5 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 3 | a | d | g | j | return | l | @ | KP6 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 4 | tab | w | r | y | \ | i | p | del |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 5 | q | e | t | u |crsr dwn| o | [ | KP4 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 6 |l shift | c | b | . | KP. | ^Y |r shift | KP3 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 7 | z | v | n | , | KP0 | ^O | repeat | KP2 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 8 | RVS | x | space | m | home | ^U | / | KP1 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 9 | <-- | 3 | 6 | 9 |runstop | : |--------| ^V |
# +--------+--------+--------+--------+--------+--------+--------+--------+
#
# ^N = both shifts + 2
# ^Y = left shift + TAB + I
# ^O = Z + A + L
# ^U = RVS + A + L
# ^V = TAB + <- + DEL
#
# Business (US) matrix (differences to UK)
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 2 | | | | | ; | | \ | |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 3 | | | | | | | [ | |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 4 | | | | | @ | | | |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 5 | | | | | | | ] | |
# +--------+--------+--------+--------+--------+--------+--------+--------+
!CLEAR
!LSHIFT 6 0
!RSHIFT 6 6
!VSHIFT RSHIFT
###### Same Keys than C-64 Keyboard
# RUN/STOP
27 9 4 8
# CLR/HOME
278 8 4 8
# LEFT/RIGHT
275 0 5 8
# UP/DOWN
274 5 4 8
#INST/DEL
# Keymmodore maps both INST/DEL and RESTORE keys the same because there is no RESTORE Key in PET Keyboards.
8 4 7 8
# SHIFT
304 6 0 2
303 6 6 4
# ENTER
13 3 4 8
# Arrow Up
127 1 5 8
# Arrow Left
96 9 0 8
# @
91 3 6 8
# </,
44 7 3 8
# >/.
46 6 3 8
# ?//
47 8 6 8
# Space Bar
32 8 2 8
##### Keys of C-64 real Keyboard non present in PET Business Keyboard
# + (Plus)
45 2 6 1
# - (Minus)
61 0 3 16
# * (Asterisk)
93 9 5 1
# \ (Using Pound Key)
277 4 4 16
###### Keys of real PET Business Keyboard not present in C-64 Keyboard
# ESCAPE <-- F1
282 2 0 8
# OFF/RVS <-- F3
284 8 0 8
# REPEAT <-- F5
286 7 6 8
# TAB
9 4 0 8
# =/- (only =)
92 0 3 1
# */: (only :)
59 9 5 0
# [ <--- F10 (mapped to F10 to be used with C= Key)
291 5 6 16
# +/; (only ;)
39 2 6 0
# ] <--- F11 (mapped to F11 to be used with C= Key)
292 2 4 16
##### Numeric Pad Keys(With C= Key)
256 7 4 8
257 8 7 8
258 7 7 8
259 6 7 8
260 5 7 8
261 2 7 8
262 3 7 8
263 1 4 8
264 0 4 8
265 1 7 8
266 6 4 8
##### Numbers Key
49 1 0 8 /* 1 -> 1 */
50 0 0 8 /* 2 -> 2 */
51 9 1 8 /* 3 -> 3 */
52 1 1 8 /* 4 -> 4 */
53 0 1 8 /* 5 -> 5 */
54 9 2 8 /* 6 -> 6 */
55 1 2 8 /* 7 -> 7 */
56 0 2 8 /* 8 -> 8 */
57 9 3 8 /* 9 -> 9 */
48 1 3 8 /* 0 -> 0 */
##### Letter Keys
113 5 0 8 /* Q -> Q */
119 4 1 8 /* W -> W */
101 5 1 8 /* E -> E */
114 4 2 8 /* R -> R */
116 5 2 8 /* T -> T */
121 4 3 8 /* Y -> Y */
117 5 3 8 /* U -> U */
105 4 5 8 /* I -> I */
111 5 5 8 /* O -> O */
112 4 6 8 /* P -> P */
97 3 0 8 /* A -> A */
115 2 1 8 /* S -> S */
100 3 1 8 /* D -> D */
102 2 2 8 /* F -> F */
103 3 2 8 /* G -> G */
104 2 3 8 /* H -> H */
106 3 3 8 /* J -> J */
107 2 5 8 /* K -> K */
108 3 5 8 /* L -> L */
122 7 0 8 /* Z -> Z */
120 8 1 8 /* X -> X */
99 6 1 8 /* C -> C */
118 7 1 8 /* V -> V */
98 6 2 8 /* B -> B */
110 7 2 8 /* N -> N */
109 8 3 8 /* M -> M */

View File

@@ -0,0 +1,256 @@
# VICE SDL keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE 3.1 SDL2 (https://vice-emu.sourceforge.io/windows.html)
# Mapped for compatibility to PET Models with Graphics Keyboards only (2000, 3000, 4000, Non-B models).
# Based on C64 Positional Layout.
#
# PET Graphics Keyboard has only one character and one graphics PETSCII per key.
# Keymmodore uses C= Key to access a layer with PET Keys corresponding to shifted symbols of C-64 Keyboard (!/"/#/$/%/&/'/(/)/[/]/</>/?) so you have to hold C= for those keys.
# You can access PET graphics PETSCII of those keys by pressing Shift and/or C=. Graphics PETSCII will match the the original PET Graphics Keyboard layout (not labeled in C64).
#
# Graphics PETSCII set of PET and C-64 are the same so there is no missing graphics PETSCII codes. They just have been redistributed to match C-64 Keyboard.
# ANY left C-64 labeled Graphics PETSCII works using C= Key thanks to being remapped by Keymmodore-64.
# ANY right C-64 labeled Graphics PETSCII works using Shift keys thanks to being remapped by VICE (this file).
#
# OFF/REVERSE key is mapped to CTRL (Control) Key.
# Backslash Key is mapped to £ (Pound) Key.
#
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
#
# Negative row values:
# 'keysym -1 n' joystick #1, direction n
# 'keysym -2 n' joystick #2, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
#
# this is a PET graphics keyboard mapping (symbolic)
#
# Graphics keyboard matrix:
#
# 0 1 2 3 4 5 6 7
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 0 | ! | # | % | & | ( | <-- | home |crsr rgt|
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 1 | " | $ | ' | \ | ) |--------|crsr dwn| del |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 2 | q | e | t | u | o | ^ | 7 | 9 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 3 | w | r | y | i | p |--------| 8 | / |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 4 | a | d | g | j | l |--------| 4 | 6 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 5 | s | f | h | k | : |--------| 5 | * |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 6 | z | c | b | m | ; | return | 1 | 3 |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 7 | x | v | n | , | ? |--------| 2 | + |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 8 |l shift | @ | ] |--------| > |r shift | 0 | - |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 9 | rvs on | [ | space | < | stop |--------| . | = |
# +--------+--------+--------+--------+--------+--------+--------+--------+
#
# The original gfx keyboard reflects the matrix perfectly:
#
# ! " # $ % ' & \ ( ) <- ^s ^q ^] ^t
# q w e r t y u i o p ^ 7 8 9 /
# a s d f g h j k l : ^m 4 5 6 *
# z x c v b n m , ; ? ^m 1 2 3 +
# LS ^r @ [ ] SPACE < > ^c RS 0 . - =
#
# http://www.6502.org/users/andre/petindex/keyboards.html
!CLEAR
!LSHIFT 8 0
!RSHIFT 8 5
!VSHIFT RSHIFT
###### Same Keys than C-64 Keyboard
# RUN/STOP
27 9 4 8
# CLR/HOME
278 0 6 8
# LEFT/RIGHT
275 0 7 8
# UP/DOWN
274 1 6 8
#INST/DEL
# Keymmodore maps both INST/DEL and RESTORE keys the same because there is no RESTORE Key in PET Keyboards.
8 1 7 8
# SHIFT
304 8 0 2
303 8 5 4
# ENTER
13 6 5 8
# Arrow Up
127 2 5 8
# Arrow Left
96 0 5 8
# @
91 8 1 32
91 5 4 1
# Space Bar
32 9 2 8
# + (Plus)
45 7 7 32
45 9 1 1
# - (Minus)
61 8 7 32
61 8 2 1
268 1 3 8 /* Numpad * -> \ PETSCII */
# = (Equals)
92 9 7 8
# \ (Using Pound Key)
9 1 3 32
9 1 4 1
# * (Asterisk)
93 5 7 32
93 8 1 1
# OFF/RVS
#9 9 0 8
277 9 0 8
##### Combined Keys
# , (Comma)
44 7 3 8
# < (Less)
280 9 3 8 /* PgUp -> < */
# . (Dot)
46 9 6 8
# > (Greater)
281 8 4 8 /* PgDown -> > */
# / (Slash)
47 3 7 8
# ? (Question)
267 7 4 8 /* Numpad / -> ? */
# : (Colon)
59 5 4 8
# [ (Left Bracket)
269 9 1 8 /* Numpad - -> [ */
# ; (SemiColon)
39 6 4 8
# ] (Right Bracket)
270 8 2 8 /* Numpad + -> ] */
#### Numbers and Symbols (1st Row)
49 6 6 8 /* 1 -> 1 */
282 0 0 8 /* F1 -> ! */
50 7 6 8 /* 2 -> 2 */
283 1 0 8 /* F2 -> " */
51 6 7 8 /* 3 -> 3 */
284 0 1 8 /* F3 -> # */
52 4 6 8 /* 4 -> 4 */
285 1 1 8 /* F4 -> $ */
53 5 6 8 /* 5 -> 5 */
286 0 2 8 /* F5 -> % */
54 4 7 8 /* 6 -> 6 */
287 0 3 8 /* F6 -> & */
55 2 6 8 /* 7 -> 7 */
273 1 2 8 /* Up -> ' */
56 3 6 8 /* 8 -> 8 */
276 0 4 8 /* Left -> ( */
57 2 7 8 /* 9 -> 9 */
290 1 4 8 /* F9 -> ) */
48 8 6 8 /* 0 -> 0 */
###### Letter Keys ######
# Right PETSCII with any Shift Key.
# Left PETSCII with Commodore Key.
# PETSCII are remapped to match C64 Keyboard.
113 2 0 8 /* Q -> Q */
291 7 7 8 /* F10 -> + PETSCII */
119 3 0 8 /* W -> W */
101 2 1 8 /* E -> E */
114 3 1 8 /* R -> R */
116 2 2 8 /* T -> T */
121 3 2 8 /* Y -> Y */
117 2 3 8 /* U -> U */
105 3 3 8 /* I -> I */
111 2 4 8 /* O -> O */
112 3 4 8 /* P -> P */
97 4 0 8 /* A -> A */
115 5 0 8 /* S -> S */
100 4 1 8 /* D -> D */
102 5 1 8 /* F -> F */
103 4 2 8 /* G -> G */
104 5 2 8 /* H -> H */
106 4 3 8 /* J -> J */
107 5 3 8 /* K -> K */
108 4 4 8 /* L -> L */
122 6 0 8 /* Z -> Z */
292 8 7 8 /* F11 -> - PETSCII */
120 7 0 8 /* X -> X */
99 6 1 8 /* C -> C */
118 7 1 8 /* V -> V */
98 6 2 8 /* B -> B */
110 7 2 8 /* N -> N */
308 5 7 1 /* Left Alt -> * PETSCII */
109 6 3 8 /* M -> M */
# joystick keymap A (port 1)
264 -1 7 /* NumPad 8 -> UP */
258 -1 2 /* NumPad 2 -> DOWN */
260 -1 4 /* NumPad 4 -> LEFT */
262 -1 5 /* NumPad 6 -> RIGHT */
256 -1 0 /* NumPad 0 -> FIRE */
# joystick Keymap B (port 2)
263 -2 7 /* NumPad 7 -> UP */
259 -2 2 /* NumPad 3 -> DOWN */
257 -2 4 /* NumPad 1 -> LEFT */
265 -2 5 /* NumPad 9 -> RIGHT */
266 -2 0 /* NumPad . -> FIRE */

View File

@@ -0,0 +1,197 @@
# VICE SDL based keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE 3.1 SDL2 (https://vice-emu.sourceforge.io/windows.html)
# Mapped for positional compatibility with 264 Computers Series: Plus/4, Commodore-16 and Commodore-116 Keyboards.
# Based on C64 Positional Layout, however some keys change position in order to be easier to use and remember.
# The relevant changes are:
# ESCAPE is mapped to Left Arrow Key.
# Cursor-Up is mapped to C64 Up-Arrow Key (C16/Plus-4 Up-Arrow is actually Shift+0).
# Cursor-Left is mapped to C64 RESTORE Key (C16/Plus-4 CLEAR/HOME Key moves to C64 CLEAR/HOME key).
# Cursor-Down is mapped to C64 Up/Down Cursor Key (It works only Down regardless Shift pressed or not, like the real C16/Plus-4 Key).
# Cursor-Right is mapped to C64 Left/Right Cursor Key (It works only Right regardless Shift pressed or not, like the real C16/Plus-4 Key).
#
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal lines have 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT)
# '!LCTRL row col' left control keyboard row/column
# '!VCTRL ctrlkey' virtual control key (LCTRL)
# '!LCBM row col' left CBM keyboard row/column
# '!VCBM cbmkey' virtual CBM key (LCBM)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values (as a sum):
# 0 key is not shifted for this keysym/scancode
# 1 key is combined with shift for this keysym/scancode
# 2 key is left shift on emulated machine
# 4 key is right shift on emulated machine
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
# 64 key is shift-lock on emulated machine
# 128 shift modifier required on host
# 256 key is used for an alternative keyboard mapping
# 512 alt-r (alt-gr) modifier required on host
# 1024 ctrl modifier required on host
# 2048 key is combined with cbm for this keysym/scancode
# 4096 key is combined with ctrl for this keysym/scancode
# 8192 key is (left) cbm on emulated machine
# 16384 key is (left) ctrl on emulated machine
#
# to migrate older keymaps and use the CBM and/or CTRL related features:
#
# - define !LCTRL, !VCTRL, !LCBM, !VCBM
# - add 'key is (left) cbm/ctrl on emulated machine' flags to
# all keys that map to the cbm or ctrl key respectively.
#
# after that the virtual cbm/ctrl flags and requiring host modifiers
# should work as expected. keep an eye on the error messages.
#
# Negative row values:
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
# 'keysym -5 n' joyport keypad, key n
#
# Joyport keypad key layout:
# --------------------------
# | 0 | 1 | 2 | 3 | 4 |
# --------------------------
# | 5 | 6 | 7 | 8 | 9 |
# --------------------------
# | 10 | 11 | 12 | 13 | 14 |
# --------------------------
# | 15 | 16 | 17 | 18 | 19 |
# --------------------------
#
# When a bigger-spaced key is used,
# it uses the upper-left-most key value.
# Symbolic Mapping, US Layout, Plus4, SDL
#############################################################################
#
# Commodore 16/116/Plus-4 keyboard matrix:
#
# 0 1 2 3 4 5 6 7
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 0 |INST/DEL|RETURN |POUND |F7/HELP |F4/F1 |F5/F2 |F6/F3 |@ |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 1 |3 # |W |A |4 $ |Z |S |E | SHIFTs |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 2 |5 % |R |D |6 & |C |F |T |X |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 3 |7 ' |Y |G |8 ( |B |H |U |V |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 4 |9 ) |I |J |0 ^ |M |K |O |N |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 5 |DOWN |P |L |UP |. > |: [ |- |, < |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 6 |LEFT |* |; ] |RIGHT |ESC |= |+ |/ ? |
# +--------+--------+--------+--------+--------+--------+--------+--------+
# 7 |1 ! |CLR/HOME| CTRLs |2 " |SPACE |C= |Q |RUN/STOP|
# +--------+--------+--------+--------+--------+--------+--------+--------+
#
#############################################################################
!CLEAR
!LSHIFT 1 7
!RSHIFT 1 7
!VSHIFT RSHIFT
!SHIFTL LSHIFT
!LCBM 7 5
!VCBM LCBM
!LCTRL 7 2
!VCTRL LCTRL
27 7 7 8 /* ESC -> Run/Stop */
49 7 0 8 /* 1 -> 1 */
50 7 3 8 /* 2 -> 2 */
51 1 0 8 /* 3 -> 3 */
52 1 3 8 /* 4 -> 4 */
53 2 0 8 /* 5 -> 5 */
54 2 3 8 /* 6 -> 6 */
55 3 0 8 /* 7 -> 7 */
56 3 3 8 /* 8 -> 8 */
57 4 0 8 /* 9 -> 9 */
48 4 3 8 /* 0 -> 0 */
45 6 6 8 /* Minus -> Plus */
61 5 6 8 /* Equal -> Minus */
8 0 0 8 /* Backspace -> Del */
9 7 2 16392 /* TAB -> Ctrl */
113 7 6 8 /* Q -> Q */
119 1 1 8 /* W -> W */
101 1 6 8 /* E -> E */
114 2 1 8 /* R -> R */
116 2 6 8 /* T -> T */
121 3 1 8 /* Y -> Y */
117 3 6 8 /* U -> U */
105 4 1 8 /* I -> I */
111 4 6 8 /* O -> O */
112 5 1 8 /* P -> P */
91 0 7 8 /* [ -> @ */
93 6 1 8 /* ] -> * (Asterisk) */
13 0 1 8 /* Return -> Return */
306 7 5 8200 /* Left Ctrl -> CBM */
97 1 2 8 /* A -> A */
115 1 5 8 /* S -> S */
100 2 2 8 /* D -> D */
102 2 5 8 /* F -> F */
103 3 2 8 /* G -> G */
104 3 5 8 /* H -> H */
106 4 2 8 /* J -> J */
107 4 5 8 /* K -> K */
108 5 2 8 /* L -> L */
59 5 5 8 /* ; -> : */
39 6 2 8 /* ' -> ; */
96 6 4 8 /* ` -> Esc -> C64 Arrow-Left Key */
92 6 5 8 /* \ -> Equal */
301 1 7 64 /* Caps Lock -> Shift Lock */
304 1 7 2 /* Left Shift -> Left Shift */
122 1 4 8 /* Z -> Z */
120 2 7 8 /* X -> X */
99 2 4 8 /* C -> C */
118 3 7 8 /* V -> V */
98 3 4 8 /* B -> B */
110 4 7 8 /* N -> N */
109 4 4 8 /* M -> M */
44 5 7 8 /* , -> , */
46 5 4 8 /* . -> . */
47 6 7 8 /* / -> / */
303 1 7 4 /* Right Shift -> Right Shift */
32 7 4 8 /* Space -> Space */
282 0 4 8 /* F1 -> F1/F4 */
284 0 5 8 /* F3 -> F2/F5 */
286 0 6 8 /* F5 -> F3/F6 */
288 0 3 8 /* F7 -> HELP/F7 */
278 7 1 8 /* Home -> CLR/HOME */
127 5 3 8 /* Delete -> CRSR UP -> C64 Arrow-Up key */
280 6 0 8 /* Page_Up -> CRSR LEFT -> C64 RESTORE key */
275 6 3 8 /* Right -> CRSR RIGHT */
274 5 0 8 /* Down -> CRSR DOWN */
277 0 2 8 /* Ins -> Pound */
# joystick keymap A (port 1)
264 -1 7 /* NumPad 8 -> UP */
258 -1 2 /* NumPad 2 -> DOWN */
260 -1 4 /* NumPad 4 -> LEFT */
262 -1 5 /* NumPad 6 -> RIGHT */
256 -1 0 /* NumPad 0 -> FIRE */
# joystick Keymap B (port 2)
263 -2 7 /* NumPad 7 -> UP */
259 -2 2 /* NumPad 3 -> DOWN */
257 -2 4 /* NumPad 1 -> LEFT */
265 -2 5 /* NumPad 9 -> RIGHT */
266 -2 0 /* NumPad . -> FIRE */

View File

@@ -0,0 +1,173 @@
# VICE SDL based keyboard mapping file suitable for real C64 keyboards using Keymmodore-64 interfase by K-rnivoro. https://www.keymmodore.com/
# Tested with VICE 3.1 SDL2 (https://vice-emu.sourceforge.io/windows.html)
# Mapped for positional compatibility to VIC-20 Keyboards.
# Using VICE default positional layout.
#
# File format:
# - comment lines start with '#'
# - keyword lines start with '!keyword'
# - normal line has 'keysym/scancode row column shiftflag'
#
# Keywords and their lines are:
# '!CLEAR' clear whole table
# '!INCLUDE filename' read file as mapping file
# '!LSHIFT row col' left shift keyboard row/column
# '!RSHIFT row col' right shift keyboard row/column
# '!VSHIFT shiftkey' virtual shift key (RSHIFT or LSHIFT)
# '!SHIFTL shiftkey' shift lock key (RSHIFT or LSHIFT)
# '!UNDEF keysym' remove keysym from table
#
# Shiftflag can have the values:
# 0 key is not shifted for this keysym/scancode
# 1 key is shifted for this keysym/scancode
# 2 left shift
# 4 right shift
# 8 key can be shifted or not with this keysym/scancode
# 16 deshift key for this keysym/scancode
# 32 another definition for this keysym/scancode follows
# 64 shift lock
# 256 key is used for an alternative keyboard mapping
#
# Negative row values:
# 'keysym -1 n' joystick keymap A, direction n
# 'keysym -2 n' joystick keymap B, direction n
# 'keysym -3 0' first RESTORE key
# 'keysym -3 1' second RESTORE key
# 'keysym -4 0' 40/80 column key
# 'keysym -4 1' CAPS (ASCII/DIN) key
# 'keysym -5 n' joyport keypad, key n
#
# Joystick direction values:
# 0 Fire
# 1 South/West
# 2 South
# 3 South/East
# 4 West
# 5 East
# 6 North/West
# 7 North
# 8 North/East
#
# Joyport keypad key layout:
# --------------------------
# | 0 | 1 | 2 | 3 | 4 |
# --------------------------
# | 5 | 6 | 7 | 8 | 9 |
# --------------------------
# | 10 | 11 | 12 | 13 | 14 |
# --------------------------
# | 15 | 16 | 17 | 18 | 19 |
# --------------------------
#
# When a bigger spaced key is used,
# it uses the upper left most key value.
# VIC20 Keyboard matrix
#
# +-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0|Bit 1|Bit 2|Bit 3|Bit 4|Bit 5|Bit 6|Bit 7|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 0| 1 ! |A_LFT| CTRL| R/S |SPACE| C= | Q | 2 " |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 1| 3 # | W | A | S_L | Z | S | E | 4 $ |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 2| 5 % | R | D | X | C | F | T | 6 & |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 3| 7 ' | Y | G | V | B | H | U | 8 ( |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 4| 9 ) | I | J | N | M | K | O | 0 |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 5| + | P | L | , < | . > | : [ | @ | - |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 6|POUND| * | ; ] | / ? | S_R | = | A_UP| HOME|
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
# |Bit 7| DEL |Retrn|C_L/R|C_U/D| F1 | F3 | F5 | F7 |
# +-----+-----+-----+-----+-----+-----+-----+-----+-----+
!CLEAR
!LSHIFT 1 3
!RSHIFT 6 4
!VSHIFT RSHIFT
!SHIFTL LSHIFT
27 0 3 8 /* ESC -> Run/Stop */
49 0 0 8 /* 1 -> 1 */
50 0 7 8 /* 2 -> 2 */
51 1 0 8 /* 3 -> 3 */
52 1 7 8 /* 4 -> 4 */
53 2 0 8 /* 5 -> 5 */
54 2 7 8 /* 6 -> 6 */
55 3 0 8 /* 7 -> 7 */
56 3 7 8 /* 8 -> 8 */
57 4 0 8 /* 9 -> 9 */
48 4 7 8 /* 0 -> 0 */
45 5 0 8 /* Minus -> Plus */
61 5 7 8 /* Equal -> Minus */
8 7 0 8 /* Backspace -> Del */
9 0 2 8 /* TAB -> Ctrl */
113 0 6 8 /* Q -> Q */
119 1 1 8 /* W -> W */
101 1 6 8 /* E -> E */
114 2 1 8 /* R -> R */
116 2 6 8 /* T -> T */
121 3 1 8 /* Y -> Y */
117 3 6 8 /* U -> U */
105 4 1 8 /* I -> I */
111 4 6 8 /* O -> O */
112 5 1 8 /* P -> P */
91 5 6 8 /* [ -> @ */
93 6 1 8 /* ] -> * */
13 7 1 8 /* Return -> Return */
306 0 5 8 /* Left Ctrl -> CBM */
97 1 2 8 /* A -> A */
115 1 5 8 /* S -> S */
100 2 2 8 /* D -> D */
102 2 5 8 /* F -> F */
103 3 2 8 /* G -> G */
104 3 5 8 /* H -> H */
106 4 2 8 /* J -> J */
107 4 5 8 /* K -> K */
108 5 2 8 /* L -> L */
59 5 5 8 /* ; -> : */
39 6 2 8 /* ' -> ; */
96 0 1 8 /* ` -> Left Arrow */
92 6 5 8 /* \ -> = */
304 1 3 2 /* Left Shift -> Left Shift */
122 1 4 8 /* Z -> Z */
120 2 3 8 /* X -> X */
99 2 4 8 /* C -> C */
118 3 3 8 /* V -> V */
98 3 4 8 /* B -> B */
110 4 3 8 /* N -> N */
109 4 4 8 /* M -> M */
44 5 3 8 /* , -> , */
46 5 4 8 /* . -> . */
47 6 3 8 /* / -> / */
303 6 4 4 /* Right Shift -> Right Shift */
32 0 4 8 /* Space -> Space */
282 7 4 8 /* F1 -> F1 */
284 7 5 8 /* F3 -> F3 */
286 7 6 8 /* F5 -> F5 */
288 7 7 8 /* F7 -> F7 */
278 6 7 8 /* Home -> CLR/HOME */
275 7 2 8 /* Right -> CRSR RIGHT */
274 7 3 8 /* Down -> CRSR DOWN */
277 6 0 8 /* Ins -> Pound */
127 6 6 8 /* Del -> Up Arrow */
# Restore key mappings
280 -3 0
# joystick keymap A (port 1)
264 -1 7 /* NumPad 8 -> UP */
258 -1 2 /* NumPad 2 -> DOWN */
260 -1 4 /* NumPad 4 -> LEFT */
262 -1 5 /* NumPad 6 -> RIGHT */
256 -1 0 /* NumPad 0 -> FIRE */
# joystick Keymap B (port 2)
263 -2 7 /* NumPad 7 -> UP */
259 -2 2 /* NumPad 3 -> DOWN */
257 -2 4 /* NumPad 1 -> LEFT */
265 -2 5 /* NumPad 9 -> RIGHT */
266 -2 0 /* NumPad . -> FIRE */

View File

@@ -0,0 +1,2 @@
#!/bin/sh
/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=x64sc net.sf.VICE

View File

@@ -0,0 +1,2 @@
#!/bin/sh
/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=xplus4 net.sf.VICE

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- DO NOT EDIT THIS FILE! --> <!-- DO NOT EDIT THIS FILE! -->
<!-- Application version : 3.14.0 --> <!-- Application version : 4.8.0 -->
<!-- Project Target : C64 --> <!-- Project Target : C64 -->
<Project> <Project>
<Target>2</Target> <Target>2</Target>
@@ -12,6 +12,8 @@
<GenToDisk>False</GenToDisk> <GenToDisk>False</GenToDisk>
<BuildToPrgFile>True</BuildToPrgFile> <BuildToPrgFile>True</BuildToPrgFile>
<d64Name /> <d64Name />
<DiskDirectoryName />
<StartPrg>zzzzzzzzzzzz.zzzzzzzzz</StartPrg>
<Comments>Primo test col CBM Prg Studio</Comments> <Comments>Primo test col CBM Prg Studio</Comments>
<Author>Paolo Iocco</Author> <Author>Paolo Iocco</Author>
<Email /> <Email />
@@ -19,7 +21,13 @@
<NoSingleFileBuild>False</NoSingleFileBuild> <NoSingleFileBuild>False</NoSingleFileBuild>
<CreatedWithVersion /> <CreatedWithVersion />
<HasGitRepo>False</HasGitRepo> <HasGitRepo>False</HasGitRepo>
<OutputBinDir />
<GitIgnoreList /> <GitIgnoreList />
<UsingKickAssembler>False</UsingKickAssembler>
<KickOutputFile />
<KickConfigFile />
<KickGenDebugInfo>True</KickGenDebugInfo>
<NewProjectStructure>True</NewProjectStructure>
<Cartridge> <Cartridge>
<CrtBuildingCartridge>False</CrtBuildingCartridge> <CrtBuildingCartridge>False</CrtBuildingCartridge>
<CrtSignature>C64 CARTRIDGE</CrtSignature> <CrtSignature>C64 CARTRIDGE</CrtSignature>
@@ -46,10 +54,12 @@
<!--Screen designer settings--> <!--Screen designer settings-->
<AssyBinaryFileLocation /> <AssyBinaryFileLocation />
<AssyExportList /> <AssyExportList />
<RawExportList />
<!--End of screen designer settings--> <!--End of screen designer settings-->
<ExtendedBASIC>False</ExtendedBASIC>
<SourceFiles> <SourceFiles>
<SourceFile> <SourceFile>
<Name>test.bas</Name> <Name>\BASIC Files\test.bas</Name>
<PrgName /> <PrgName />
<FileType>1</FileType> <FileType>1</FileType>
<IncludeInBuild>True</IncludeInBuild> <IncludeInBuild>True</IncludeInBuild>